这里是我的Post
型号:检查用户是否已经投票在后,在模板
模式
class Post(models.Model):
user = models.ForeignKey(User, blank=True, null=True)
title = models.TextField(max_length=76)
content = models.TextField(null=True, blank=True)
...
class PostScore(models.Model):
user = models.ForeignKey(User, blank=True, null=True)
post = models.ForeignKey(Post, related_name='score')
upvotes = models.IntegerField(default=0)
downvotes = models.IntegerField(default=0)
这是我的模板。我想要做这样的事情......如果用户已经upvoted或downvoted后,然后隐藏给予好评/ downvote按钮:
{% if request.user in Post.has_answered %}
{% else %}
<img src="upvote.png" class="upvote" />
<img src="downvote.png" class="downvote" />
{% endif %}
我计划通过增加ManyToManyField
叫has_answered
我Post
模型要做到这一点,但我无法这样做,因为我得到这个错误:
post.Post.has_answered: (fields.E304) Reverse accessor for 'Post.has_answered' clashes with reverse accessor for 'Post.user'.
HINT: Add or change a related_name argument to the definition for 'Post.has_answered' or 'Post.user'.
post.Post.user: (fields.E304) Reverse accessor for 'Post.user' clashes with reverse accessor for 'Post.has_answered'.
HINT: Add or change a related_name argument to the definition for 'Post.user' or 'Post.has_answered'.
任何想法如何我可以解决这个问题?我不太确定错误信息,因为我不认为我可以改变我目前的user
字段。
它确实是一个正确的解决方案,但如果说我们有大约1000个用户和/或大约1000个upvotes/downvotes,这不会是一个性能问题吗? – EzzatA
我不能在我的'Post'模型中添加另一个'User'字段,否则我会在原始问题中显示错误。我已经有'user = models.ForeignKey(User,blank = True,null = True)'是“Post”的作者,我无法删除它。 – Zorgan
@EzzatA也许使用exists()可以提高性能。 https://docs.djangoproject.com/en/1.9/ref/models/querysets/#exists – rayy