Ошибка: «Вы пытаетесь добавить поле, отличное от нуля»

Я определил ниже модель и получаю

Ошибка: You are trying to add a non-nullable field 'user' to videodata without a default; we can't do that You are trying to add a non-nullable field 'user' to videodata without a default; we can't do that

models.py

 class User(Model): userID = models.IntegerField() userName = models.CharField(max_length=40) email = models.EmailField() class Meta: ordering = ['userName'] verbose_name = 'User MetaData' verbose_name_plural = 'Users MetaData' def __unicode__(self): return str(self.userName) class VideoData(Model): video = models.CharField(max_length=40) time = models.IntegerField() user = models.ForeignKey(User, related_name='User') class Meta: verbose_name = 'User_Video MetaData' 

Где я делаю неправильно ????

6 Solutions collect form web for “Ошибка: «Вы пытаетесь добавить поле, отличное от нуля»”

Как говорится в ошибке, поле пользователя в VideoData не допускает нулевых значений, поэтому вам нужно либо предоставить его пользователю по умолчанию, либо разрешить null. Самый простой способ – разрешить null.

 user = models.ForeignKey(User, related_name='User', null=True) 

или пользователь по умолчанию

 user = models.ForeignKey(User, related_name='User', default=<have your default user id here>) 

Я столкнулся с той же проблемой с моим OneToOneField. И я сделал это, чтобы удалить все файлы миграции (которые находятся в каталоге migrations под вашим приложением) и запустить:

 python manage.py makemigrations 

а также

 python manage.py migrate 

Я не знаю почему, но это сработало в моем случае. Это не помешает вам попробовать то, что я написал выше.

Удачи!

Вот что я сделал, чтобы исправить ту же проблему

  1. Прокомментируйте ссылку внешнего ключа в видеоданных и запустите makemigrations и выполните миграцию
  2. Добавьте модель в admins.py и создайте новую запись в таблице.
  3. Теперь раскомментируйте ссылку на внешний ключ и укажите значение по умолчанию = 1. Run выполните миграцию и перенесите
  4. Удалите значение по умолчанию = 1 в поле внешнего ключа.

Надеюсь это поможет. Это решение будет работать каждый раз, когда вы сталкиваетесь с такими ошибками.

Ответ, который вы приняли, будет работать, но это неправильное решение, так как вы сможете хранить объекты без отношения к другому объекту, и я предполагаю, что вы этого не хотите.

Когда вы меняете базу данных или удаляете ее, не удаляя файлы миграции, django поймет, что есть заполненная база данных, и что вы уже создали обе модели, поэтому, если вы добавите пустое обязательное поле к уже созданному объекту, это приведет к ошибке. Правильным решением будет удаление файлов миграции (или изменение имени в папке только для обеспечения безопасности) и после запуска:

 python manage.py makemigrations python manage.py migrate 

Отредактировано: перед запуском mogrations сначала удалите базу данных или таблицы.

Если вы только что допустили ошибку null=True или значение по умолчанию, и вы не хотите очищать свою базу данных, у вас есть другие параметры в зависимости от состояния вашей базы данных:

Первый случай . Если каждый объект VideoData уже имеет отношение к пользователю, вы можете просто удалить null=True или default="" и запустить:

 python manage.py makemigrations 

и после:

 python manage.py migrate 

Второй случай : если некоторые поля пользователя являются нулевыми или имеют значение по умолчанию, которое не является пользователем, вам необходимо запустить собственный SQL, чтобы установить каждое поле в пользовательский_файл по умолчанию, прежде чем удалять null=True или the default="" и запускать миграции ,

Однако я предполагаю, что в первом случае вам будет достаточно четырех, если вы не хотите удалять свою базу данных, я полагаю, что вы заполнили поле пользователя правильными данными. Я просто хотел дать вариант, если у кого-то есть такая ситуация.

Большинство подобных ситуаций не являются проблемой не добавления файлов в модель (с использованием makemigrations и migrate)

Но из-за неправильных ошибок в типе моделей и форм Fields (ЗДЕСЬ это произошло из-за ошибки синтаксиса внешнего ключа)

Поэтому сначала обратитесь: https://www.djangoproject.com/

Могут быть и другие причины:

Иногда база данных заполняется, и она принимает только значение Non Nullable Value (эта ошибка довольно часто встречается в новых версиях django

SO также устанавливает условие (null == True) в вашей модели

Вот что я делаю:

  1. change requirement = models.ForeignKey(Requirement) к requirement = models.ForeignKey(Requirement, null=True)
  2. запускать makemigrations и мигрировать
  3. change back requirement = models.ForeignKey(Requirement, null=True) к requirement = models.ForeignKey(Requirement)
  4. запускать makemigrations и мигрировать снова.

Я полагаю, что правило django-orm о foreignKey:

  1. разрешить foreignKey быть нулевым при первом создании таблицы
  2. отклонить, чтобы добавить foreignKey, который является нулевым, потому что foreignKey данных вставить в таблицу до будет null, что против воли программиста
  3. разрешить изменение foreignKey с нуля до нуля.
  • Можно ли обмануть pip install -find-links в использовании загруженного sdist для -подходящих требований?
  • Django Inlines разрешений пользователя + просмотр только - разрешения
  • Как кэшировать вызовы API Django Rest Framework?
  • Как сделать динамический контент в сетке с помощью Django с помощью Bootstrap?
  • Получите все связанные объекты «многие-ко-многим» из Django QuerySet
  • Как отправить электронную почту через Django?
  • Как настроить пользовательскую форму регистрации Django?
  • PyCharm, Django: нулевой охват кода
  •  
    Interesting Posts for Van-Lav

    Не удается получить доступ к приложению django через IP-адрес при доступе к нему через localhost

    Сельдерей пытается связаться с неправильным брокером

    PyDev Eclipse Переводчики Python Ошибка: stdlib не найден

    Как я могу инвертировать движение курсора в python?

    Как проверить, невозможно ли продолжить прокрутку вниз, используя Selenium

    Программно создавать методы для класса

    чередование 2 списков неравных длин

    Выполняет ли scipy logsumexp () проблему с underflow?

    скрипт python для конкатенации всех файлов в каталоге в один файл

    python dict.add_by_value (dict_2)?

    Seaborn: наложение линейного графика поверх гистограммы

    Hadoop: драйвер клиента Python для HiveServer2 не удается установить

    Повторный запрос POST вызывает ошибку «socket.error: (99,« Невозможно назначить запрошенный адрес »)

    Python SQLite, как вы выполняете частичный поиск, используя '?' заполнители?

    Загрузить графический интерфейс пользователя с поляризованного поля с помощью GtkSourceView в PyGObject

    Python - лучший язык программирования в мире.