Я пытаюсь использовать для l oop результаты, полученные с помощью фильтров, примененных с помощью Django -фильтров. Но я остаюсь с сообщением "У объекта 'str' нет атрибута 'total_cost'". И когда я печатаю контекст в приведенном ниже коде, я получаю следующую команду: dict
{
'paginator': None,
'page_obj': None,
'is_paginated': False,
'object_list': <QuerySet [<Po: Po object (8)>, <Po: Po object (7)>, <Po: Po object (9)>, <Po: Po object (2)>, <Po: Po object (4)>, <Po: Po object (6)>, <Po: Po object (1)>]>, 'po_list': <QuerySet [<Po: Po object (8)>, <Po: Po object (7)>, <Po: Po object (9)>, <Po: Po object (2)>, <Po: Po object (4)>, <Po: Po object (6)>, <Po: Po object (1)>]>,
'view': <po.views.IndexView object at 0x7f6353867be0>,
'filter': <po.filters.PoFilter object at 0x7f63538879b0>
}
paginator
Po
- это моя модель, и она содержит поле total_cost, которое мне нужно пройти через цикл.
На мой взгляд:
class IndexView(ListView):
model = Po
template_name = 'poList.html'
def get_context_data(self, **kwargs):
context = super().get_context_data(**kwargs)
context['filter'] = PoFilter(self.request.GET, queryset=self.get_queryset().order_by('processed'))
print(context)
for item in context:
print(item)
cost = 0
cost = cost + item.total_cost
print(cost)
return context
В моем filters.py
:
class PoFilter(django_filters.FilterSet):
created_at = DateExactRangeField(label='Created Date Range',
widget=django_filters.widgets.RangeWidget(attrs={'placeholder': 'yyyy/mm/dd'}))
po_number = django_filters.CharFilter(lookup_expr='icontains', label='Po Number', widget=TextInput(attrs={'placeholder': 'Po_Number'}))
class Meta:
model = Po
fields = {
'created_at',
'po_number',
'approved_by',
'processed'
}
Пожалуйста, поделитесь, если вы можете решить эту проблему. Заранее спасибо !!!