Предположим, у вас есть запись модели с полем «author», указывающим на автора другой модели. Предположим, это поле может быть пустым.
Если я запустил следующий 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 и Джоша).