Невозможно назначить ":" Model.user "должен быть экземпляром" User " - PullRequest
1 голос
/ 12 февраля 2020

Создание первой записи в модели вызывает ошибку

Я выполнил следующие команды для переноса

manage.py makemigrations
manage.py migrate

Все работало нормально, после того, как я выполнил эти команды для создания первых «данных» в база данных

manage.py shell
from sms.models import Post
from django.contrib.auth.models import User
post_1 = Post(name="testname", email="testemail", gender="Monsieur", number="23233", author=User)

И она выдала мне эту ошибку:

ValueError: Cannot assign "<class 'django.contrib.auth.models.User'>": "Post.author" must be a "User" instance.

models.py files

from django.db import models
from django.contrib.auth.models import User

THE_GENDER = [
    ("Monsieur", "Monsieur"),
    ("Madame", "Madame")
]


class Post(models.Model):


    name = models.CharField(max_length=100)
    email = models.CharField(max_length=100)
    gender = models.CharField(max_length=8, choices=THE_GENDER)
    number = models.CharField(max_length=100)
    author = models.ForeignKey(User, on_delete=models.CASCADE)

    def __str__(self):
        return self.name


1 Ответ

5 голосов
/ 12 февраля 2020

Вы видите эту ошибку, потому что вы пытаетесь присвоить объект класса атрибуту author. Но это должен быть пользовательский экземпляр. Поэтому сначала вы должны создать пользовательскую запись и использовать ее, как-то так:

user = User.objects.create_user(username="name", email="email@mail.com", password="Pass12345")
post_1 = Post(name="testname", email="testemail", gender="Monsieur", number="23233", author=user)

Вы можете думать о классе модели как о таблице базы данных. В то время как экземпляр модели представляет запись из этой таблицы.

...