在下面的代码中,我有一个帖子、点赞、评论模型。当我尝试迁移模型以激活它时,我收到反向访问器错误。对于
Likes
来说,user_that_liked
只能点一次,而user_liked_to
可以有很多次点赞。对于Comment
,user_that_commented
和user_commented_to
都可以有很多评论。我应该如何设置模型,以便可以对模型执行我想要的操作,同时解决此问题。如果您需要更多信息,请告诉我。
from django.db import models
from django.contrib.auth.models import User
class Post(models.Model):
user = models.ForeignKey(User, on_delete=models.CASCADE)
post_question = models.CharField(max_length=200)
pub_date = models.DateTimeField()
class Likes(models.Model):
user_that_liked = models.ForeignKey(User, on_delete=models.CASCADE)
user_liked_to = models.ForeignKey(User, on_delete=models.CASCADE)
post = models.ForeignKey(Post, on_delete=models.CASCADE)
date = models.DateTimeField()
like_or_dislike = models.IntegerField(default=0)
class Comment(models.Model):
user_that_commented = models.ForeignKey(User, on_delete=models.CASCADE)
user_commented_to = models.ForeignKey(User, on_delete=models.CASCADE)
post = models.ForeignKey(Post, on_delete=models.CASCADE)
date = models.DateTimeField()
comment = models.CharField(max_length=300)
您需要指定相关名称来区分关系
class Post(models.Model):
user = models.ForeignKey(User, on_delete=models.CASCADE)
post_question = models.CharField(max_length=200)
pub_date = models.DateTimeField()
class Likes(models.Model):
user_that_liked = models.ForeignKey(User, on_delete=models.CASCADE, related_name='user_that_liked')
user_liked_to = models.ForeignKey(User, on_delete=models.CASCADE, related_name='user_liked_to')
post = models.ForeignKey(Post, on_delete=models.CASCADE)
date = models.DateTimeField()
like_or_dislike = models.IntegerField(default=0)
class Comment(models.Model):
user_that_commented = models.ForeignKey(User, on_delete=models.CASCADE, related_name='user_that_commented')
user_commented_to = models.ForeignKey(User, on_delete=models.CASCADE, related_name='user_commented_to')
post = models.ForeignKey(Post, on_delete=models.CASCADE)
date = models.DateTimeField()
comment = models.CharField(max_length=300)
但是,携带这些用户关系感觉有点多余,因为
Likes
只能有user_that_liked
,而user_liked_to
可以从喜欢的对象中派生出来。 (评论也一样)
那么 - 可以通过
like.post.user
找到“喜欢”的用户,并通过 like.user_that_liked
找到喜欢的用户