В Django: Как получить и отобразить в шаблоне verbose_name модели, что их значение истинно, в то время как имя поля неизвестно?

У меня есть модель, в которой много объявлений models.BooleanField.

class a_lot_of_booleans(model.Models):
    old_or_new = models.BooleanField(default=False,verbose_name="is it an old or a new item")
    product_for_teens = models.BooleanField(default=False,verbose_name="is this product for teens")
    in_original_package = models.BooleanField(default=False,verbose_name="is this product in original package?")

Который затем используется в некоторых других классах, таких как:

class product_for_sale(a_lot_of_booleans):
    U_Id = models.OneToOneField(User, on_delete=models.CASCADE, primary_key=True)
    product_name=models.CharField(max_length=50)

class product_for_buying(a_lot_of_booleans):
    U_Id = models.OneToOneField(User, on_delete=models.CASCADE, primary_key=True)
    product_name=models.CharField(max_length=50)

Класс a_lot_of_booleans может изменяться со временем. Некоторые булевы могут быть добавлены, некоторые могут быть удалены. Мне нужно отобразить список из нескольких записей, в котором только истинные поля одного из классов, наследующих класс a_lot_of_booleans и значение product_name, принадлежащие определенному пользователю. То, что я пытаюсь сделать в views.py, выглядит следующим образом:

def view_rfps(request):
    list=product_for_sale.objects.all().filter(U_Id=request.user)
    for item in list:
        values=item._meta.fields
        for value in values:
            res=item.objects.filter(**{value:'True'}) ##<< lines that fail
            print(res)

приведенный выше код не работает при res=item.objects.filter(**{value:'True'}) на "Manager is not accessible through search_for_constructor_rfp instances". Идея заключается в том, чтобы передать переменную res в view, однако я не могу пройти этот пункт. У меня есть несколько элементов в списке и для каждого списка несколько булевых полей, которые я не уверен как они будут называться в будущем, поэтому я не могу просто использовать product_for_sale. в шаблоне позже.
. Подскажите, как вывести расширенное название неизвестного булевого поля?

Вот что сработало для меня:

def view_rfps(request):
list=product_for_sale.objects.all().filter(U_Id=request.user)
for item in list:
    values=item._meta.fields
    for value in values:
        temp=getattr(item,value.name)
        if temp:
            print(value.verbose_name)
Вернуться на верх