Я создал собственное поле, которое в основном «обновлено» ForeignKey
. Однако я забыл установить on_delete=models.PROTECT
по умолчанию (желаемое поведение по умолчанию этого поля).Как сделать миграции Django об изменениях внутри настраиваемого поля?
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()
, но я не знаю, как именно следует использовать его для этого случая.
Я нашел деконструкцию. Как я могу точно использовать его для этого случая? Что я должен делать в этом? – kravemir