В 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)