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 }}
您可以在
文章
上编写助手方法,也可以编写模板标记。