如何让Django迁移了解自定义字段内的更改?

时间:2015-02-25 08:38:43

标签: django django-models models django-migrations

我制作了自定义字段,基本上是“升级”ForeignKey字段。但是,我忘了将on_delete=models.PROTECT设置为默认值(该字段的所需默认行为)。

class MyReferenceField( models.ForeignKey ):
    def __init__(self, *args, **kwargs):
        my_args = { 
            'null': True,
            'blank': True,
            'to': Photo,
            #'on_delete': models.PROTECT,  #forgotten property, that I'm adding to the field
        }
        my_args.update( kwargs )
        super(MyReferenceField, self).__init__(**my_args)

    ... MORE STUFF ...

如果我将on_delete添加到kwargs,则不会发生任何变化。如果我将on_delete添加到构造函数调用(即手动每次使用字段),那么它就可以工作。

我想更新该字段的每个用法/实例,将on_delete设置为PROTECT。那么,我怎样才能让Django知道字段的默认行为/属性的变化?

编辑 - 说明:我正在使用Django 1.7中的本机迁移。我找到deconstruct(),但我不知道在这种情况下我应该如何使用它。

1 个答案:

答案 0 :(得分:0)

根据您是否使用Django 1.7或South的本机迁移,您可能需要在自定义字段中添加deconstruct() - 方法或south_field_triple