В наборе запросов нет имен полей?

#python #django

#python #django

Вопрос:

Итак, в настоящее время я обновляю приложение Django с 1.8 до 3.1 и обнаружил следующую ошибку:

AttributeError: 'QuerySet' object has no attribute 'field_names'

Я попытался найти информацию об устаревании этого атрибута и проверил API-интерфейс QuerySet на предмет информации, но не смог найти ничего подходящего.

Кто-нибудь проходил через то же самое?

Ответ №1:

Если я не пропустил ни одно из примечаний к выпуску с 1.8 по 2.0 или временной шкалы устаревания, не задокументировано, что объекты набора запросов имеют атрибут ‘field_names’, который в основном представляет собой список имен столбцов таблицы, к которой принадлежит набор запросов.

Просматриваем код из стабильных 1.8 и 1.9 из django /db /models /query.py вы можете видеть, что атрибут был удален.

В случае, если вы использовали этот атрибут и вам нужно, чтобы он работал после обновления, вы можете использовать Meta API моделей Django следующим образом:

field_names = [f.name for f in Object._meta.get_fields()]