Всем привет.
Пытаюсь отфильтровать данные на сайте с использованием FilterView.
Modelclass Receipt(models.Model):
receipt_date = models.CharField(max_length=20)
name_seller = models.CharField(max_length=150)
product_information = ArrayField(ArrayField(
models.CharField(max_length=1000), default=list
)
)
total_sum = models.CharField(max_length=20)
def __str__(self):
return self.name_seller
FilterForm
class ReceiptsFilter(filters.FilterSet):
names_seller = Receipt.objects.values_list('id', 'name_seller', named=True).all()
name_seller = filters.ChoiceFilter(label='Seller', choices=names_seller)
class Meta:
model = Receipt
fields = ('name_seller', )
Views
class ReceiptView(FilterView):
queryset = Receipt.objects.all()
template_name = 'receipts/receipts.html'
filterset_class = ReceiptsFilter
filter_backends = (filters.DjangoFilterBackend,)
error_message = gettext_lazy('У вас нет прав на просмотр данной страницы! '
'Авторизуйтесь!')
login_url = 'login'
def get_context_data(self, *, object_list=None, **kwargs):
name_seller = self.request.GET.get('name_seller')
context = super().get_context_data(**kwargs)
context['receipts'] = Receipt.objects.filter(
pk=name_seller)
return context
Когда я выбираю из выпадающего списка name_seller, фильтр срабатывает, но когда я ничего не выбираю, появляется ошибка
Field 'id' expected a number but got ''.
, что ожидаемо, но как мне вывести все данные из модели Receipt когда не выбран name_seller?