Предположим, у вас есть модель Entry с полем «автор», указывающим на автора другой модели.Предположим, что это поле может быть пустым.
Если я запустил следующий QuerySet:
Entry.objects.filter (author = X)
Где X - это некоторое значение.Предположим, что в MySQL я установил составной индекс для Entry для некоторого другого столбца и author_id, в идеале я бы хотел, чтобы SQL просто использовал «author_id» в модели Entry, чтобы он мог использовать составной индекс.
Оказывается, что Entry.objects.filter (author = 5) будет работать, соединение не выполняется.Но, если я скажу author = None, Django выполняет соединение с Author, а затем добавляет к предложению Where Author.id IS NULL.Так что в этом случае он не может использовать составной индекс.
Есть ли способ сообщить Django просто проверить pk, а не переходить по ссылке?
Единственный известный мне способ - добавить дополнительный .extra (где = ['author_id IS NULL']) в QuerySet, но я надеялся, что какая-то магия в .filter () сработает.
Спасибо.
(Извините, я не прояснил ранее об этом, и спасибо за ответы от Lazerscience и Джош).