Почему функция .query () не работает с запросом Django ORM? - PullRequest
4 голосов
/ 30 октября 2019

Как я уже знаю, используя .query.__str__(), мы можем получить sql эквивалентный запрос из запроса Django ORM.

Например: Employees.objects.filter(id = int(id)).query.__str__()

Над кодом работает хорошо, и яЯ могу получить SQL-эквивалентный запрос, но когда я использую то же самое для запроса ниже, я получаю сообщение об ошибке, как показано ниже.

Employees.objects.filter(id = int(id)).first().query.__str__()
AttributeError: 'Employees' object has no attribute 'query'

Почему сейчас я получаю сообщение об ошибке, какие-либо предложения?

1 Ответ

2 голосов
/ 30 октября 2019

.first() [Django-doc] не возвращает QuerySet, возвращает объект модели. Запрос оценивается с нетерпением.

Вы можете проверить последний запрос, с которым Django сделал:

from django.db import connection
print(<b>connection.queries[-1:]</b>)

При этом, по сути, some_queryset.first() часто является тем же запросом, что и some_queryset за исключением того, что он ограничит набор запросов.

Примечание : пожалуйста, сделайте , а не используйте .__str__, вы можете использовать str(my_queryset.query) или простоprint(my_queryset.query).

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