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 ORM中以这种方式访问对象会有任何性能改进吗?_Django_Django Models_Django Rest Framework_Django Views_Django Orm - Fatal编程技术网

在django ORM中以这种方式访问对象会有任何性能改进吗?

在django ORM中以这种方式访问对象会有任何性能改进吗?,django,django-models,django-rest-framework,django-views,django-orm,Django,Django Models,Django Rest Framework,Django Views,Django Orm,我有两个模型,其中包含从一个到另一个的ForeignKey class M1(models.Model): name = models.TextField() class M2(models.Model): name = models.TextField() parent = models.ForeignKey(M1, related_name='children') 我正在重构代码以提高性能 这两个ORM查询之间是否存在性能差异 m1 = M1.objects.ge

我有两个模型,其中包含从一个到另一个的ForeignKey

class M1(models.Model):
    name = models.TextField()

class M2(models.Model):
    name = models.TextField()
    parent = models.ForeignKey(M1, related_name='children')
我正在重构代码以提高性能

这两个ORM查询之间是否存在性能差异

m1 = M1.objects.get(id=1)
children = m1.children.all()

这两个ORM查询之间是否存在性能差异

。在前者中,您进行查询以获取
M1
对象,然后为第二个对象构造
QuerySet
。如果您以后“使用”了
QuerySet
,那么它将进行两次查询

在后者中,您只构造一个queryset,因此,如果使用queryset,则只进行一个查询

因此,如果您对
M1
对象不感兴趣,那么使用后者会更好

children = M2.objects.filter(parent_id=1)