#django
#django
Вопрос:
С помощью необработанного запроса к столбцам для SQL, которые будут выполняться, можно получить доступ следующим образом.
query_set = Model.objects.raw('select * from table')
query_set.columns
Для столбцов нет атрибута django.db.models.query.QuerySet
.
Я не использую raw … Я отлаживал обычный набор запросов с использованием Q фильтров… он возвращал слишком много записей… итак, я написал код, чтобы посмотреть, какими будут результаты с обычным SQL. Я хотел бы видеть столбцы и фактический SQL, вызываемый в наборе запросов, чтобы я мог диагностировать, в чем проблема, не догадываясь.
Как вы получаете столбцы или SQL, которые будут выполняться из django.db.models.query.QuerySet
экземпляра?
Комментарии:
1. Во-первых, почему бы не использовать ORM для использования
values
для нужных вам столбцов? Если вы избегаетеraw
, вы также получаете защиту и защищенность ORM. Если вам действительно нужно использоватьraw
, эти документы должны помочь со столбцами; docs.djangoproject.com/en/3.1/topics/db/sql /…2. Я не использую raw … Я отлаживал обычный набор запросов с использованием Q фильтров… он возвращал слишком много записей… итак, я написал код, чтобы посмотреть, какими будут результаты с обычным SQL. Я хотел бы видеть столбцы и фактический SQL, вызываемый в наборе запросов, чтобы я мог диагностировать, в чем проблема, не догадываясь.
Ответ №1:
Хорошо, итак, основываясь на вашем комментарии, если вы хотите увидеть, что django создал в терминах SQL, есть атрибут, который вы можете использовать в Queryset
.
После того, как вы напишете свой запрос, qs = MyModel.objects.all()
вы можете проверить это, выполнив qs.query
, который, если вы распечатаете его, покажет вам сам SQL-запрос.
Вам нужно будет проверить этот запрос, чтобы увидеть, какие столбцы включаются.
query
Объект — это класс с именем Query
, о котором я не могу найти упоминания в документах django, но его источник находится здесь;https://github.com/django/django/blob/master/django/db/models/sql/query.py#L136