Как вставить данные в реляционную таблицу один в один в Django? - PullRequest
0 голосов
/ 15 апреля 2019

У меня есть таблица UserProfile, которая связана с таблицей Django User по умолчанию.Вот как это выглядит.

class UserProfile(models.Model):
    user = user.OneToOneField(User, on_delete=models.CASCADE)
    section = models.CharField(max_length=255, blank=True)
    year = models.IntegerField(null=True, blank=True)
    course = models.CharField(max_length=255, blank=True)
    qrcode = models.CharField(max_length=255, blank=True)
    present = models.BooleanField(default=False)

Я пытаюсь вставить данные в таблицу UserProfile, используя Django Shell.

from users.models import UserProfile

a = UserProfile(qrcode="hello")
a.save()

Это то, как я всегда знал, чтобы вставить данные в таблицы, это всегда работало.НО, когда я пытаюсь сделать это в UserProfile модели.Я получаю это исключение. Сбой ограничения NOT NULL: users_userprofile.user_id .Что, в свою очередь, вызвано следующим исключением Ошибка форматирования: RelatedObjectDoesNotExist: UserProfile не имеет пользователя .

Я немного понимаю, что мне как-то нужно предоставить пользовательский экземпляр .Но я не знаю, как.Может кто-нибудь, пожалуйста, помогите мне.

Ответы [ 2 ]

1 голос
/ 15 апреля 2019

Для начала нужно создать пользователя.

u1 = User(username='user1')

u1.save()

Создать профиль пользователя. Передайте идентификатор «родительского» объекта в качестве идентификатора этого объекта:

v1 = UserProfile(user=u1, ....)
v1.save()

см. это

0 голосов
/ 15 апреля 2019

Сначала необходимо создать пользователя

user = User.objects.create(username='user')

и тогда вы можете сделать:

user_profile = UserProfile.objects.create(user=user, ...)
...