Есть ли разница между фильтром и исключить в django? Если у меня естьФильтр Django vs exclude
self.get_query_set().filter(modelField=x)
, и я хочу добавить еще критерии, есть смысл разница между ними, чтобы следующие две строки кода?
self.get_query_set().filter(user__isnull=False, modelField=x)
self.get_query_set().filter(modelField=x).exclude(user__isnull=True)
считается лучшей практикой или они одинаковы как в функции, так и в производительности?
спасибо. так что это только вопрос личных предпочтений? Я просто хотел убедиться, что я не собираюсь делать что-то необъяснимо глупое. – Enrico
@ Enrico: Не совсем, это зависит от того, чего вы хотите. См. Мой ответ. Производительность не имеет значения в этом случае, это два метода, которые служат для разных целей. Для генерации SQL в документации говорится о '.exclude()': * Несколько параметров объединяются через AND в базовый оператор SQL, и все это заключено в NOT(). * –
@Felix. Благодарю. Я предполагаю, что мой главный вопрос, который я мог бы сообщить более четко, касался производительности как в джанго, так и в конечном счете в SQL. Из вашего последующего комментария кажется, что он может работать лучше, чем другой, но в основном на основе полученного SQL. Тем не менее, изменение второго оператора в '.exclude (user__isnull = True) .filter (modelField = x)' затем сделает два утверждения более или менее равными. – Enrico