Django:知道属性是否是默认值

时间:2009-06-18 10:26:13

标签: django django-models

如何知道某个值是否为Model属性的默认值。

例如

class Alias(models.Model) :
  image = models.ImageField(upload_to='alias', default='/media/alias-default.png')

a = Alias.get("123")
# this doesn't work
if a.image == a.image.default :
  pass
# nor this
if a.image == Alias.image.default :
  pass

我尝试挖掘文档,但没有看到任何内容。

2 个答案:

答案 0 :(得分:3)

您无法从酒店本身获取,您必须通过model._meta下的模型选项。

a._meta.get_field_by_name('image')[0].get_default()

答案 1 :(得分:2)

Django中的default与SQL默认值不同 - 它只是管理员在新对象创建时自动填充表单字段。

如果要将某些内容与定义为default的值进行比较,则必须在其他位置(即settings.py)中定义它。像:

class MyModel(models.Model):
    ...
    my_field = models.IntegerField(default=settings.INT_DEFAULT)

default值存储在MyModel._meta._fields()[field_creation_index].default中,但要注意这是在内部挖掘。