столбцы из django.db.models.запрос.Набор запросов

#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