【问题标题】:Default value for field in Django modelDjango 模型中字段的默认值
【发布时间】:2010-10-19 20:14:39
【问题描述】:

假设我有一个模型:

class SomeModel(models.Model):
    id = models.AutoField(primary_key=True)
    a = models.CharField(max_length=10)
    b = models.CharField(max_length=7)

目前我正在使用默认管理员来创建/编辑这种类型的对象。 如何从管理员中删除字段 b,以便每个对象无法创建一个值,而是接收默认值 0000000?

【问题讨论】:

    标签: python django django-models django-admin


    【解决方案1】:

    将editable 设置为False 并将default 设置为您的默认值。

    http://docs.djangoproject.com/en/stable/ref/models/fields/#editable

    b = models.CharField(max_length=7, default='0000000', editable=False)
    

    另外,您的 id 字段是不必要的。 Django 会自动添加。

    【讨论】:

    • 字段的默认值意味着该字段不可编辑?
    【解决方案2】:

    你也可以在默认字段中使用callable,比如:

    b = models.CharField(max_length=7, default=foo)
    

    然后定义callable:

    def foo():
        return 'bar'
    

    【讨论】:

    • 这似乎在 1.8 中不起作用,尽管文档表明它应该。 foo() 应该是类方法吗?
    • 您可能需要在 foo 函数周围设置 @staticmethod 包装器。
    【解决方案3】:

    您可以像这样设置默认值:

    b = models.CharField(max_length=7,default="foobar")
    

    然后您可以使用模型的 Admin 类隐藏该字段,如下所示:

    class SomeModelAdmin(admin.ModelAdmin):
        exclude = ("b")
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-08-09
      • 2017-01-28
      • 2011-02-16
      • 1970-01-01
      • 2010-11-21
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多