假设我的对象的DecimalField
默认设置为20
。当我在python中创建一个对象而没有为DecimalField
指定一个值时,它是None
。
如何在每次提供值时确保应用默认值?
class SomeModel(models.Model):
"""Demonstrate the flaw of the default value."""
dec_field = models.DecimalField(default=1, blank=True, null=True)
my_model = SomeModel()
my_model.save() # this is where I expect the dec_field to become Decimal('1.0')
# instead it's None
答案 0 :(得分:3)
确保您的模型和数据库与South等迁移工具同步,或者删除表并重新同步。
答案 1 :(得分:1)
应使用您所描述的内容设置默认值,需要有关您的示例的更多信息。但如果您想覆盖,或手动设置默认值,您可以执行以下操作;
DEC_FIELD_DEFAULT = 20
class Example(models.Model):
dec_field = models.DecimalField(default=DEC_FIELD_DEFAULT)
def __init__(self, *args, **kwargs):
super(Example, self).__init__(self, *args, **kwargs)
self.dec_field = DEC_FIELD_DEFAULT