УНИКАЛЬНОЕ ограничение не удалось добавить новое поле модели в Django - PullRequest
0 голосов
/ 30 октября 2019

Когда я хочу добавить новое поле с именем slug в мою Post модель в Djnago , команда migrate вызовет UNIQUE constraint failed: new__chat_post.slug

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

База данных sqlite3 , а версия Django - 2.2.

спасибо.

Модель:

class Post(models.Model):    
    title = models.TextField(max_length=100)
    context = models.TextField(max_length=255)
    creation_date  = models.DateTimeField(default = timezone.now)
    author = models.ForeignKey(settings.AUTH_USER_MODEL,on_delete = models.CASCADE)
    slug = models.SlugField(default=["title"],unique=True)

1 Ответ

0 голосов
/ 30 октября 2019

Вы получаете эту ошибку, потому что миграция, сгенерированная командой makemigrations Джанго, пытается установить значение по умолчанию "title" для каждого экземпляра модели Post, которая уже существует в вашей базе данных. Но так как поле помечено как unique=True, эта операция завершится неудачей.

Чтобы решить эту проблему, вы можете вручную изменить автоматически созданную миграцию, чтобы предотвратить попытки Django назначать одно и то же значение каждому экземпляру и кодировать вашисобственная логика для присвоения уникального значения полю slug каждого ранее существующего экземпляра.

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