【发布时间】:2017-09-15 00:38:47
【问题描述】:
我有以下型号:
class UserPost(models.Model):
user = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE)
post = models.ForeignKey(Post, on_delete=models.CASCADE)
created = models.DateTimeField(auto_now_add=True)
class User(AbstractUser):
MALE = 'M'
FEMALE = 'F'
GENDER_CHOICES = (
(MALE, 'Male'),
(FEMALE, 'Female')
)
posts = models.ManyToManyField(Post, through='UserPost')
created = models.DateTimeField(auto_now_add=True)
updated = models.DateTimeField(auto_now=True)
class Post(models.Model):
user = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE)
title = models.CharField(max_length=100)
content = models.TextField()
status = models.CharField(max_length=100)
created = models.DateTimeField(auto_now_add=True)
updated = models.DateTimeField(auto_now=True)
当我运行 python manage.py makemigrations 时,它会引发以下错误:
users.User.posts:(fields.E303)“User.posts”的反向查询名称与字段名称“Post.user”冲突。 提示:重命名字段“Post.user”,或在字段“User.posts”的定义中添加/更改相关名称参数。
User 和 Post 模型之间存在多对多的关系。每个用户可以喜欢很多帖子,并且每个帖子可以被很多用户喜欢。 User 和 Post 模型之间也存在多对一的关系。每个用户可以写多篇文章,每篇文章只能由一个用户写。
默认情况下,'User.posts' 的反向查询名称不应为 user_set。如果是这样,为什么此名称与字段名称“Post.user”冲突?有人可以解释这个错误的含义吗?谢谢。
【问题讨论】: