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

Django:知道属性是否是默认值,django,django-models,Django,Django Models,如何知道某个值是否为模型特性的默认值 比如说 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.imag

如何知道某个值是否为模型特性的默认值

比如说

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
我试着在文档中挖掘,但没有看到任何东西。

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

如果要将某个值与定义为默认值的值进行比较,则必须在其他位置(即在settings.py中)对其进行定义。比如:

默认值存储在MyModel中。_meta._fields[field\u creation\u index]。默认值,但请注意,这是在挖掘内部。

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

如果要将某个值与定义为默认值的值进行比较,则必须在其他位置(即在settings.py中)对其进行定义。比如:


默认值存储在MyModel中。_meta。_fields[field_creation_index]。默认值,但请注意,这是在挖掘内部。

您无法从属性本身获取它,必须通过model下的model选项。\u meta


您无法从属性本身获取它,必须通过模型下的模型选项。\u meta


这是否受支持或可能会继续更改?这是否受支持或可能继续更改?任何名称以下划线开头的内容都应视为内部内容。无论如何,它在1.0和1.1之间没有变化。如果你想使用内部属性,内部API的meta非常稳定,它更容易阅读MyModel。_meta.get_field'field_name'。默认而不是通过创建索引访问。当然,我甚至不知道meta存在这样的方法。我总是在完整的字段列表中使用字段进行迭代,从未尝试访问单个字段属性:_meta已经在Django 1.8中正式化:@furins谢谢,这是我需要的信息!但这里有一个指向您所指版本的静态链接:任何名称以下划线开头的内容都应视为内部内容。无论如何,它在1.0和1.1之间没有变化。如果你想使用内部属性,内部API的meta非常稳定,它更容易阅读MyModel。_meta.get_field'field_name'。默认而不是通过创建索引访问。当然,我甚至不知道meta存在这样的方法。我总是在完整的字段列表中使用字段进行迭代,从未尝试访问单个字段属性:_meta已经在Django 1.8中正式化:@furins谢谢,这是我需要的信息!但这里有一个指向您所指版本的静态链接:
class MyModel(models.Model):
    ...
    my_field = models.IntegerField(default=settings.INT_DEFAULT)
a._meta.get_field_by_name('image')[0].get_default()