Задать вопрос
@wintreist

Почему не получается расширить модель Django?

По этому гайду пытаюсь расширить модель User, для своих полей, но возникает проблема о которой в гайде не написано:
class Profile(models.Model):
    user = models.OneToOneField(User, on_delete=models.CASCADE)
    api_key = models.CharField(max_length=64, blank=True)

@receiver(post_save, sender=User)
def create_user_profile(sender, instance, created, **kwargs):
    if created:
        Profile.objects.create(
            user = instance,
            api_key=sha256(f"{datetime.now()} {instance}".encode("UTF-8")).hexdigest(),
        )

Пытаюсь сделать миграции, но не получается:
It is impossible to add a non-nullable field 'user' to profile without specifying a default. This is because 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 with a null value for this column)
 2) Quit and manually define a default value in models.py.
Select an option:

Да, я прочитал, что тут написано, но совершенно не понимаю, что в этом случае тогда делать, не могу же я в поле пользователя добавлять что-то стандартное.
Прошу вашей помощи
  • Вопрос задан
  • 1274 просмотра
Подписаться 1 Простой Комментировать
Решения вопроса 1
Mi11er
@Mi11er
A human...
Потому что уже создали User и django Хочет ему подпихнуть Profile
Варианта 2
1) Для модели Profile , сделать в атрибуте User - Null = True
2) При таком вопросе, нажать 1 , потом снова 1
Проставит первого юзера для профайла
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
AlexNest
@AlexNest
Работаю с Python/Django
Значит, что в базе уже есть таблица с таким же именем, но без поля user. И в ней есть какие то данные. А сейчас вы пытаетесь создавать/обновить таблицу, но с этим полем. И, поскольку, данные user не могут быть пустыми, база требует, чтобы вы что-то указали,.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы