Django 访问外键

Django 访问外键,django,django-models,django-templates,django-views,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) ar

我有以下型号:

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个。我想为每个人获得一个发件人(如朋友)的文章列表。相反,我收到的是文章列表,其中包含了分享本文的每个用户的集合。

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

blog_feed = Article.objects.filter(shared__sharedmap__receiver=self).values('title', 'rating', 'shared__sender')
然后在模板上:

{{ article.shared__sender }}

您可以在
文章
上编写助手方法,也可以编写模板标记。