Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Django一对多_Python_Django_Django Models_Database Relations_Django Database - Fatal编程技术网

Python Django一对多

Python Django一对多,python,django,django-models,database-relations,django-database,Python,Django,Django Models,Database Relations,Django Database,我真的很困惑django如何处理数据库关系 最初我有一个包含一个简单整型字段的文章模型,用于文章视图,最近我尝试扩展文章视图的定义以包含它自己的字段,所以我为它创建了一个模型。IP、会话密钥等 对于如何建立关系,我有点不知所措,对我来说,在文章模型中有一个一对多字段是最有意义的,因为一篇文章可以有许多不同的视图,但一个视图只能是一篇文章的一部分 我看到的所有实现都以一种非常奇怪的反向方式设置了这个字段,这会带来什么?不幸的是,Django没有一对多字段。这是通过在本例中的ArticleView模

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

最初我有一个包含一个简单整型字段的文章模型,用于文章视图,最近我尝试扩展文章视图的定义以包含它自己的字段,所以我为它创建了一个模型。IP、会话密钥等

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


我看到的所有实现都以一种非常奇怪的反向方式设置了这个字段,这会带来什么?

不幸的是,Django没有一对多字段。这是通过在本例中的ArticleView模型上创建ForeignKey来实现的。当您希望轻松访问模板中的文章视图时,可以在ForeignKey上设置相关的_名称

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


请注意,这将为您想要的每个计数创建一个数据库查询。最好使用带有annotate:Article.objects.annotatenum_views=Count'views'

的查询集,不幸的是,Django没有一对多字段。这是通过在本例中的ArticleView模型上创建ForeignKey来实现的。当您希望轻松访问模板中的文章视图时,可以在ForeignKey上设置相关的_名称

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


请注意,这将为您想要的每个计数创建一个数据库查询。最好使用带有annotate:Article.objects.annotatenum_views=Count'views'的queryset

您能给我们展示一下您的模型代码吗?我认为您要做的是在ArticleView模型中将关系创建为文章的foreignkey字段。这将创建一个与文章的一对多关系。你不需要在文章模型中定义一个字段或属性。这就是我所做的。定义我的文章有多少视图的字段实际上不在我的文章中,这看起来真的很奇怪和违反直觉,我想也许我遗漏了一些东西,但我想不是。直到知道我的文章视图是文章模型中的一个整型字段之前,我可以很容易地在模板中显示视图,在管理面板中按视图数量排序等等。。现在我真的不知道该怎么做。你可以在文章中创建一个名为Article_views的属性,并根据需要计算这个数字。如果你发布模型代码,可能有人会告诉你怎么做。在模板中访问该属性时,它是modelfield还是方法并不重要。但是,如果您需要经常访问文章视图,您可能需要使用一些技巧来避免缓慢和不必要的数据库查询。您可以向我们展示您的模型代码吗?我认为您要做的是在ArticleView模型中将关系创建为文章的foreignkey字段。这将创建一个与文章的一对多关系。你不需要在文章模型中定义一个字段或属性。这就是我所做的。定义我的文章有多少视图的字段实际上不在我的文章中,这看起来真的很奇怪和违反直觉,我想也许我遗漏了一些东西,但我想不是。直到知道我的文章视图是文章模型中的一个整型字段之前,我可以很容易地在模板中显示视图,在管理面板中按视图数量排序等等。。现在我真的不知道该怎么做。你可以在文章中创建一个名为Article_views的属性,并根据需要计算这个数字。如果你发布模型代码,可能有人会告诉你怎么做。在模板中访问该属性时,它是modelfield还是方法并不重要。但是,如果您需要经常访问文章视图,您可能需要使用一些技巧来避免缓慢和不必要的数据库查询。谢谢您的精彩解释!有没有机会澄清一下annotate在这里做了什么?也许你最好读一下。基本上,它添加了一个计数表达式和一个连接到您的SQL查询库中,这是一个很好的解释!有没有机会澄清一下annotate在这里做了什么?也许你最好读一下。基本上,它向SQL查询添加了一个计数表达式和一个联接
class Article(models.Model):
    # Article definition

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