是Django查询集';s`order_by`method加法?
给定以下模型和查询,如果我多次调用是Django查询集';s`order_by`method加法?,django,django-queryset,Django,Django Queryset,给定以下模型和查询,如果我多次调用order\u by(),将产生什么查询 class MyModel(models.Model): field_a = models.IntegerField() field_b = models.IntegerField() qs = MyModel.objects.all().order_by('field_a') qs = qs.order_by('field_b') qs将生成什么SQL ORDER BY field_a, field
order\u by()
,将产生什么查询
class MyModel(models.Model):
field_a = models.IntegerField()
field_b = models.IntegerField()
qs = MyModel.objects.all().order_by('field_a')
qs = qs.order_by('field_b')
qs
将生成什么SQL
ORDER BY field_a, field_b
或
?
也就是说,对
order\u by()
的后续调用是否覆盖以前的调用,或将其添加?答案是,对order\u by()的后续调用覆盖以前的调用:
In [7]: print MyModel.objects.all().order_by('field_a').order_by('field_b').query
SELECT "mymodel"."id", "mymodel"."field_a", "mymodel"."field_b"
FROM "mymodel"
ORDER BY "mymodel"."field_b" ASC
答案是,order\u by
的后续调用会覆盖先前的调用:
In [7]: print MyModel.objects.all().order_by('field_a').order_by('field_b').query
SELECT "mymodel"."id", "mymodel"."field_a", "mymodel"."field_b"
FROM "mymodel"
ORDER BY "mymodel"."field_b" ASC
你可以自己检查:print qs.query
我想你可以使用qs.order\u by('field\u a,field\u b')
我想我是在问后续的order\u by
调用是否是累加的。我已经改写了标题来表示这一点。@karthikr我不知道query
属性。谢谢。您可以自己检查:print qs.query
我想您可以使用qs.order\u by('field\u a,field\u b')
我想我是问后续的order\u by
调用是否是累加的。我已经改写了标题来表示这一点。@karthikr我不知道query
属性。谢谢