Как может django разработчик сказать, какой код лучше использовать - PullRequest
0 голосов
/ 09 апреля 2020

Я должен сказать, я действительно люблю django и то, как фреймворк обрабатывает многие вещи, но иногда просто кажется, что существует слишком много способов сделать то же самое, что иногда просто хочется знать если конкретный способ лучше. У меня есть строка фильтра кода, которую я изначально написал так:

Post.objects.filter(author=user).filter(approved=True).order_by('-date_posted')

Я просматривал свои коды и просто подумал изменить эту строку на

Post.objects.filter(author=user, approved=True).order_by('-date_posted')

Я знал это все еще будет работать, но все еще был удивлен, что сделал то же самое. Итак, мой вопрос в такой ситуации: как узнать, какая реализация лучше? Потому что обе строки кода выполняют фильтрацию на уровне базы данных.

1 Ответ

1 голос
/ 09 апреля 2020

В этом случае, эти разные выражения приведут (я думаю) к выполнению одного и того же SQL. Пока ваш python код не должен знать ответы из этого, запрос не будет выполнен. Вы можете вызвать метод .explain () для каждого, чтобы узнать больше об операциях с базой данных.

Django документы, наборы запросов являются ленивыми

При этом Я думаю, что они одинаковы в этом примере только потому, что filter () с двумя полями всегда подразумевает логическое «и» между ними, поэтому результаты будут одинаковыми. С некоторыми другими функциями, возможно, в приоритете может быть логика c, который изменит результирующий набор запросов и SQL.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...