访问外键

时间:2014-06-21 22:13:21

标签: django django-models django-templates django-views

我有以下型号:

class Article(models.Model):
    title = models.CharField(max_length=200, unique=False, null=False)
    rating = models.IntegerField(default=0, null=False, unique=False)

class Shared(models.Model):
    sender = models.ForeignKey(User)
    article = models.ForeignKey(Article)

class SharedMap(models.Model):
    item = models.ForeignKey(Shared)
    receiver = models.ForeignKey(User)

现在我执行以下查询:

def get_shared_feed(self):
    return Article.objects.filter(shared__sharedmap__receiver=self)

我实际上按预期获得了文章列表。但是:

{{ article.shared_set.count }}

如果以前分享这些文章,我会给我超过1分。我想获得每个文章的列表,其中包含一个发件人(例如朋友)。相反,我收到的文章列表包含分享本文的每个用户的集合。

1 个答案:

答案 0 :(得分:0)

解决方案非常简单。我只需要使用值指定要返回的字段:

blog_feed = Article.objects.filter(shared__sharedmap__receiver=self).values('title', 'rating', 'shared__sender')

然后在模板上:

{{ article.shared__sender }}