无法分配“ ”:“ Model.user”必须是“ User”实例

问题描述 投票:1回答:1

创建模型的第一个条目会引发错误

我执行了以下迁移命令

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文件

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


[创建模型的第一个条目会引发错误,我执行了以下命令来迁移manage.py makemigrations manage.py migration,在我执行了这些命令以创建第一个'...]之后,一切工作正常。 [

您看到此错误,因为您正在尝试将类对象关联到author属性。但它应该是User实例。因此,您应该首先创建用户记录并使用它,而不是像这样:
user = User.objects.create_user(username="name", email="[email protected]", password="Pass12345") post_1 = Post(name="testname", email="testemail", gender="Monsieur", number="23233", author=user)
您可以将模型类视为数据库表。虽然模型实例代表该表中的记录。
python django migration django-migrations
1个回答
4
投票
您可以将模型类视为数据库表。虽然模型实例代表该表中的记录。
© www.soinside.com 2019 - 2024. All rights reserved.