我有点困惑于Django的行话。所以我有3个模型:Post,UserProfile(User),Favorite。收藏夹会跟踪用户收藏哪些帖子。Django查询以获取用户最喜爱的帖子?
帖子--->收藏< ---用户/用户配置
最喜爱的模型:
class Favorite(models.Model):
user = models.ForeignKey(User, unique=False)
post = models.ForeignKey(Post, unique=False)
def __unicode__(self):
return self.user.username
用户配置模式:
class UserProfile(models.Model) :
user = models.ForeignKey(User, unique=True)
def get_favorites(self):
if self.user:
return self.user.favorite_set.all()
在我post_list鉴于我通过所有帖子到我的模板,并在模板中我有一个for循环显示所有职位。
{% for post in post_list %}
<hr/>
<div id=”post_{{ post.id }}”>
{% include 'posts/_post.html' %}
</div>
{% endfor %}
现在,在循环中,我想把一个逻辑,将显示“收藏”!如果登录的用户已经收到邮件。我认为传统的SQL是这样的:
SELECT favorite.post FROM favorite WHERE favorite.user = user.id
所以,在模板循环我可以做
{% if post in the.above.SQL.query%}Favorited!{% endif %}
现在我不能把这一对Django的行话出于某种原因。非常感谢您的帮助!
工作就像一个神奇魅力。我从来没有使用ManyToMany,从来没有过多关注它。现在我明白了!谢谢! – rabbid 2011-04-15 10:56:15