无法分配“<class 'django.contrib.auth.models.User'>”:"Model.user" 必须是 "User" 实例
Cannot assign "<class 'django.contrib.auth.models.User'>": "Model.user" must be a "User" instance
创建模型的第一个条目时抛出错误
我执行了以下命令进行迁移
manage.py makemigrations
manage.py migrate
一切正常,在我执行这些命令以在数据库中创建第一个 'data' 之后
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
您看到此错误是因为您试图将 class 对象分配给 author
属性。但它应该是 User 实例。所以你应该先创建用户记录并使用它,像这样:
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)
您可以将模型 class 视为数据库 table。虽然模型实例表示来自此 table.
的记录
创建模型的第一个条目时抛出错误
我执行了以下命令进行迁移
manage.py makemigrations
manage.py migrate
一切正常,在我执行这些命令以在数据库中创建第一个 'data' 之后
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
您看到此错误是因为您试图将 class 对象分配给 author
属性。但它应该是 User 实例。所以你应该先创建用户记录并使用它,像这样:
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)
您可以将模型 class 视为数据库 table。虽然模型实例表示来自此 table.
的记录