Python / Django - редактировать вывод рендера - PullRequest
0 голосов
/ 08 мая 2020

Я новичок в 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 и добавьте значение (заказчик или поставщик), а в случае обоих добавляйте массив. Или что было бы лучше?

Спасибо за помощь

1 Ответ

1 голос
/ 08 мая 2020

Я понял ... по крайней мере, это решение, которое сработало в моем случае ... это было настолько очевидно, что я его не видел :) view_all. html

{% if counterpart.is_supplier %} Supplier {% endif %}
{% if counterpart.is_supplier and counterpart.is_client %} / {% endif %}
{% if counterpart.is_client %} Customer {% endif %}

Мне все еще интересно узнать другие способы, которыми я мог бы лучше справиться. Спасибо

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