Как проверить наличие столбца в queryset (Django ORM) - PullRequest
0 голосов
/ 26 декабря 2018

Я хочу проверить, выбрано ли данное поле в заданном наборе запросов.Предполагая, что существует метод Queryset.has(), он должен выполняться без AssertionError:

qs = Author.objects.all()
assert not qs.has('articles_count')
qs = qs.annotate(articles_count=Count('articles'))
assert qs.has('articles_count')
qs = qs.values('pk')
assert not qs.has('articles_count')

(предположим, что модель Author не имеет поля articles_count по умолчанию)

1 Ответ

0 голосов
/ 26 декабря 2018

Вы можете попробовать метод Python hasattr:

In [3]: hasattr(qs, "articles_count")
Out[3]: False

Или, если вы хотите проверить этот атрибут для каждого экземпляра модели:

all([hasattr(x, "articles_count") for x in qs])
...