Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/22.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
django开发人员如何判断哪种代码更适合使用_Django - Fatal编程技术网

django开发人员如何判断哪种代码更适合使用

django开发人员如何判断哪种代码更适合使用,django,Django,我必须说,我真的很喜欢django以及框架处理很多事情的方式,但是有时候,似乎有太多的方式来做同样的事情,有时候人们只是想知道某个特定的方式是否是最好的。我有一行过滤代码,我最初是这样写的 Post.objects.filter(author=user).filter(approved=True).order_by('-date_posted') 我正在检查代码,只是想把这行代码改成 Post.objects.filter(author=user, approved=True).order_b

我必须说,我真的很喜欢django以及框架处理很多事情的方式,但是有时候,似乎有太多的方式来做同样的事情,有时候人们只是想知道某个特定的方式是否是最好的。我有一行过滤代码,我最初是这样写的

Post.objects.filter(author=user).filter(approved=True).order_by('-date_posted')
我正在检查代码,只是想把这行代码改成

Post.objects.filter(author=user, approved=True).order_by('-date_posted')

我知道它仍然可以工作,但我仍然惊讶于它做了完全相同的事情。所以,我的问题是,在这样的情况下,人们如何知道哪一个是更好的实现呢?因为这两行代码都在数据库级别进行过滤

在这种情况下,这些不同的表达式(我认为)将导致执行相同的SQL。在python代码需要知道答案之前,不会执行查询。您可以对每个数据库调用.explain()方法,以了解有关数据库操作的更多信息

也就是说,我认为它们在本例中是相同的,只是因为带有两个字段的filter()总是在它们之间暗示一个逻辑“and”,所以结果是相同的。对于其他一些函数,优先级中可能有一些逻辑会改变结果queryset和SQL