Ошибка целостности не равняется нулевому ограничению при попытке миграции - PullRequest
0 голосов
/ 11 июля 2019

Я получаю эту ошибку при попытке миграции:

"return Database.Cursor.execute(self, query, params)
django.db.utils.IntegrityError: NOT NULL constraint failed: unit_manifests.product_name_id"

Это относится к полю product_name в модели ниже.

1) Почему мне нужно установить значение по умолчанию для поля внешнего ключа?

2) Первоначально я работал без значения по умолчанию = нет, пусто = true, пусто = true.Теперь я снова запустил makemigrations, но когда я мигрирую, я все еще получаю сообщение об ошибке, я полагаю, что сначала он пытается запустить старую миграцию.Как я могу обойти это?

MODELS.PY

class Manifests(models.Model):

    reference = models.ForeignKey(Orders)
    cases = models.IntegerField()
    product_name = models.ForeignKey(Products, default=None, blank=True, null=True)
    count = models.IntegerField()
    CNF = models.DecimalField(max_digits=11, decimal_places=2, default=None, blank=True, null=True)
    FOB = models.DecimalField(max_digits=11, decimal_places=2, default=None, blank=True, null=True)

    def __str__(self):
        return self.description

1 Ответ

0 голосов
/ 11 июля 2019

Миграция Django работает следующим образом.

Сначала вы запустите makemigrations, который создаст файл на основе изменений из последнего файла, сгенерированного при запуске makemigrations.

Затем вы запустите миграцию, которая выдвинетизменения в папке миграций, которые еще не зарегистрированы в базе данных в таблице 'django_migrations'.Имена файлов миграции важны, потому что django использует их для идентификации миграции.

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

Допустим, файл миграции называется '0002_auto_20190212_1240.py', затем вы вставляете строку в таблицу 'django_migrations' с app = [app_name], name = 0002_auto_20190212_1240 и прикладными = [+ 1 секунда после последнего экземпляра].

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...