Мой вопрос в том, как лучше всего превратить поле null=True
в поле null=False
с помощью Django South. В частности, я работаю с ForeignKey
.
Django South - превращение поля null=True в поле null=False
comment
Знаете ли вы, каким будет новое значение по умолчанию для столбца внешнего ключа после null=False? Скорее, будет ли он одинаковым для всех или потребуется какая-то особая обработка, чтобы определить, каким он будет? Будет ли дефолт? Какую базу данных вы используете?
- person mkelley33   schedule 21.01.2011
Ответы (2)
Сначала вы должны написать миграцию данных: http://south.aeracode.org/docs/tutorial/part3.html, а затем выполните миграцию схемы.
person
diegueus9
schedule
21.01.2011
Если вы хотите превратить обнуляемый ForeignKey в необнуляемый, то это может быть проблематично, если у вас есть строки с NULL для этого поля (столбца). В таком случае вам нужно либо удалить, либо исправить их - возможно, с помощью пользовательской миграции данных, например diegueus9
, упомянутой в другом ответе.
Но если у вас нет строк с NULL в этом столбце, например. поскольку вы помещаете значение null=True только в том случае, если оно вам может понадобиться в будущем, вы сможете выполнить простую автоматическую миграцию схемы:
$ ./manage.py schemamigration myapp remove_null_from_fkey --auto
(...)
$ ./manage.py migrate myapp
person
Tomasz Zieliński
schedule
21.01.2011