Фильтр запросов Django, использующий hasattr (или что-то подобное) - PullRequest
2 голосов
/ 01 февраля 2011

Я хочу выполнить фильтр для модели и вернуть все объекты, которые имеют определенный атрибут.

model.objects.filter(hasattr(model, 'attrname'))

Это, очевидно, не работает, но я не уверен, как эффективно реализовать что-то siilar.

Спасибо

РЕДАКТИРОВАТЬ

Примером, где я бы использовал это, является случай, когда модель наследуется от другой

class model1(models.Model):
    ...

class model2(model1):
    ...

, если я делаю model1.objects.all()каждый из возвращаемых объектов, находящихся в model2, будет иметь дополнительный атрибут

Ответы [ 3 ]

2 голосов
/ 01 февраля 2011

Это на самом деле не имеет смысла. Все экземпляры модели имеют одинаковые атрибуты, определенные классом модели. Какова ваша настоящая цель?

Редактировать Нет, нет. Если вы выполните Model1.objects.all (), все результаты будут экземплярами Model1 и будут иметь только атрибуты Model1.

0 голосов
/ 03 сентября 2017

Я сделал это, подавив исключение FieldError:

from django.core.exceptions import FieldError
from contextlib import suppress

with suppress(FieldError):
    model.objects.filter(field_in_other_class=value)

надеюсь, что поможет

0 голосов
/ 09 февраля 2011

Я просто положил это в:

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