如何在模型(Django/ORM)中根据字段在查询中的位置进行筛选



我有一个模型Student,包含以下字段:idfirst_namelast_name。我添加了一个包含first_namelast_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'))

现在我的查询是正确的,我可以利用表中创建的索引。

相关内容

  • 没有找到相关文章

最新更新