【发布时间】:2010-08-30 20:18:07
【问题描述】:
我有以下型号:
class Post(models.Model):
message = models.TextField()
(etc.)
class UserProfile(models.Model):
user = models.ForeignKey(User, unique=True)
(etc.)
class PostFollow(models.Model):
post = models.ForeignKey(Post, related_name='follower_set')
follower = models.ForeignKey(UserProfile, related_name='follower_set')
creation_date = models.DateTimeField(auto_now_add=True)
an_arbitrary_score = models.IntegerField(default=0)
(etc.)
class Meta:
unique_together = ('post', 'follower',)
在我的模板中,我想呈现一个帖子列表以及“关注”或“取消关注”链接,以便当前用户可以决定是否关注给定的帖子。在一个我可以在 Django 模板中使用参数的世界里,我会做这样的事情:
{% for post in post_set %}
<...stuff...>
{% if post.user_is_following user %}unfollow{% else %}follow{% endif %}
<...more stuff...>
{% endfor %}
但是,我不能这样做。而且我不能在这些模型中的任何一个上创建一个零参数、模板可调用的方法,因为它们都需要知道至少一个其他参数来回答该表中是否存在给定 PostFollow 行的问题。
我很高兴编写模板扩展,但在我拿出大手笔之前,这样做是否合适?还是有更 Djangoesque 的解决方案?
【问题讨论】: