Django one-to many



我真的很困惑django是如何处理数据库关系的

原来我有一个文章模型,包含一个简单的IntegerField的article_views,最近我试图扩展一个article_view的定义,以包含它自己的字段,所以我创建了一个模型。(IP, SESSION KEY等)

关于如何建立关系,我有点不知所措,对我来说,在文章模型中有一个一对多字段是最有意义的,因为一篇文章可以有许多不同的视图,但一个视图只能是一篇文章的一部分。

我看到的所有实现都以一种非常奇怪的反向方式设置了这个,这是怎么回事?

遗憾的是,Django没有一对多字段。这是通过创建ForeignKey(在本例中是ArticleView模型)来实现的。当您想在模板中轻松访问文章视图时,您可以在ForeignKey上设置related_name

class Article(models.Model):
    # Article definition
class ArticleView(models.Model):
    article = models.ForeignKey(Article, related_name='views')

在模板中,您现在可以使用article.views.count()来获取与帐户耦合的视图数。

请注意,这会为您想要的每个计数创建一个数据库查询。最好有一个带有注释的查询集:Article.objects.annotate(num_views=Count('views'))

相关内容

  • 没有找到相关文章

最新更新