Я новичок в python, и у меня возникла следующая проблема. У меня есть база данных Counterpart с двумя логическими полями: is_client и is_supplier. При добавлении контрагента может быть либо клиент, либо поставщик, либо оба.
Я хочу отобразить это, если is_client = True c_type = "client", если is_supplier = True c_type = "supplier" и если оба True c_type = "клиент / поставщик"
Как это сделать в следующей функции?
class CounterpartsListView(ListView):
model = Counterpart
template_name = "counterparts/view_list.html"
context_object_name = "counterparts"
def get_queryset(self):
c_type = self.kwargs.get("type")
if c_type == "suppliers":
if Counterpart.objects.filter(is_supplier=True).count() >= 1:
return (
Counterpart.objects.filter(is_supplier=True)
.order_by("counterpart_name")
.extra(select={"Supplier": "is_supplier"})
)
else:
return Counterpart.objects.all().order_by("counterpart_name")
elif c_type == "customers":
if Counterpart.objects.filter(is_client=True).count() >= 1:
return (
Counterpart.objects.filter(is_client=True)
.order_by("counterpart_name")
.extra(select={"Customer": "is_client"})
)
else:
return Counterpart.objects.all().order_by("counterpart_name")
else:
return Counterpart.objects.all().order_by("counterpart_name")
это результат html, как мне добавить атрибут c_type?
{% for counterpart in counterparts %}
<tr>
<td>{{ counterpart.counterpart_name }}</td>
<td>{{ counterpart.city }}</td>
<td>{{ counterpart.country }}</td>
<td>{{ counterpart.c_type }}</td>
</tr>
{% endfor %}
В качестве альтернативы я думал изменить метод ввода и вместо двух отдельных полей (is_client и is_supplier), укажите только один с именем c_type и добавьте значение (заказчик или поставщик), а в случае обоих добавляйте массив. Или что было бы лучше?
Спасибо за помощь