我有一个模型Student
,包含以下字段:id
、first_name
、last_name
。我添加了一个包含first_name
和last_name
的组合索引。
问题出在我过滤的时候。我使用Student.objects.filter(last_name='Caicedo', first_name='Pedro')
,但内部ORM选择是:
SELECT `students`.`id`, `students`.`first_name`, `students`.`last_name`
FROM `students`
WHERE (`students`.`first_name` = 'Pedro' AND `students`.`last_name` = 'Caicedo'); args=('Pedro', 'Caicedo');
它不尊重顺序,我需要通过优化查询来尊重它。
调查这个问题可以使用Q函数来解决。示例:
from django.db.models import Q
Student.objects.filter(Q(last_name='Caicedo'), Q(first_name= 'Pedro'))
现在我的查询是正确的,我可以利用表中创建的索引。