OuroborosSK
@OuroborosSK
Линуксоид, Мозилец.

Как сослаться в модели на id в новых версиях django?

Только начал изучать Django.
На данный кусок кода, Django выдает ошибку при миграции.
class DescriptionLinks(models.Model):
    class Meta:
        db_table = "description_link"
    name = models.CharField(max_length = 100)
    description = models.TextField()

class SpecificLinks(models.Model):
    class Meta:
        db_table = "specific_link"
    link = models.SlugField(max_length = 200)
    description = models.ForeignKey(DescriptionLinks)


You are trying to add a non-nullable field 'project' to news without a default; we can't do that (the database needs something to populate existing rows).
Please select a fix:
1) Provide a one-off default now (will be set on all existing rows)
2) Quit, and let me add a default in models.py
Select an option:

Нашел похошую проблему и решение, что добавлено обязательное поле description в модели SpecificLinks, но уже существует обьект DescriptionLinks и django не знает, что запихнуть в поле description.
Так же в доке есть пример кода:
def contact_default():
    return {"email": "to1@example.com"}

contact_info = JSONField("ContactInfo", default=contact_default)


Вопрос в том, зачем это сделано, ведь в старых версиях, django ссылался на id для внешнего ключа. И как сослаться на id в новых версиях?
  • Вопрос задан
  • 1935 просмотров
Решения вопроса 1
zigen
@zigen
Добавь в поле project следующее: null=True, blank=True
Или после выполнения migrate выбери 1, а затем укажи тоже 1 :)
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
syschel
@syschel
freelance/python/django/backend
class Meta:
        db_table = "....."


Это лишнее в моделях. Конкретно db_table.
Ответ написан
Комментировать
Можешь нажать 1. Тебе предложит заполнить уже существующую таблицу данными
.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы