У меня модель django:
#models.py
class m1(models.Model):
some_word = models.CharField()
Я создал базу данных с помощью команды manage.py syncdb, а затем добавил поле ForeignKey в модель.
#models.py
from django.contrib.auth.models import User
class m1(models.Model):
some_word = models.CharField()
user = models.ForeignKey(User)
Насколько я знаю, собственный django не поддерживает модификацию db, поэтому мне нужно создать столбец user_id вручную. Хорошо, я захожу в phpmyadmin и создаю этот столбец. На данный момент все в порядке, приложение работает. Но потом я понимаю, что мне нужна опция blank = True в пользовательском поле:
#models.py
from django.contrib.auth.models import User
class m1(models.Model):
some_word = models.CharField()
user = models.ForeignKey(User, blank = True)
И при сохранении любого объекта m1 я получил ошибку «Невозможно присвоить None:« m1.user »не допускает нулевые значения». Я знаю, что если я удалю таблицу и сделаю это с помощью syncdb, все будет хорошо, и если я использую инструмент миграции, такой как South, все будет в порядке. Но я хочу понять механику этого и выяснить, что не так с db.
Я вызываю «manage.py sqlall app», и оно сообщает «СОЗДАТЬ ТАБЛИЦУ» и создает индексы:
CREATE INDEX `app_m1_a703c35a` ON `app_m1` (`user_id`);
ALTER TABLE `app_m1` ADD CONSTRAINT `user_id_refs_id_5b1b34cc`
FOREIGN KEY (`user_id`) REFERENCES `auth_user` (`id`);
Хорошо, я захожу в phpmyadmin и делаю этот sql-материал (честно говоря, я не знаю, что делают эти индексы). Но ошибка все равно возникает. Что я должен делать?