Проблема в том, что я не могу отфильтровать запись из своего словаря при поиске по ключу.
Просто заметьте, что я передаю свой набор фильтров со словарем, а не с набором запросов.
Для уточнения смотрите код ниже:
просмотр фрагмента
class CompletedWithTotalsWholesaleOrderProductsListView(LoginRequiredMixin,SingleTableMixin, FilterView):
login_url = '/login/'
table_class = CompletedWithTotalsWoocommerceOrderProductsTable
model = Woo_Order_Has_Products
template_name ='woo_commerce_orders/completed_with_totals_wholesale_order_products_list.html'
filterset_class = WoocommerceOrderProductsFilter
def get_context_data(self, **kwargs):
context = super(CompletedWithTotalsWholesaleOrderProductsListView, self).get_context_data(**kwargs)
#object_list=Woo_Order_Has_Products.objects.filter(woo_order__is_completed=True,woo_order__is_invoiced=True,woo_order__is_approved=True,woo_order__is_paid=True)
#populate the table with a sample dictionary
data = [{'woo_order_id':8,'seller_commission':88, 'net_total':888, 'vat':8888, 'gross_total':88888},
{'woo_order_id':9,'seller_commission':99, 'net_total':999, 'vat':9999, 'gross_total':99999},]
f = self.filterset_class(self.request.GET, queryset=data)
context['filter'] = f
table = self.table_class(data)
# if self.request.user.first_name!="neuro":
# table.exclude = ('delete',)
if not self.request.user.is_superuser:
table.exclude = ('delete',)
RequestConfig(self.request).configure(table)
context['table'] = table
has_filter = any(field in self.request.GET for field in set(self.filterset_class.get_fields()))
context['has_filter'] = has_filter
return context
фрагмента таблицы
class CompletedWithTotalsWoocommerceOrderProductsTable(tables.Table):
woo_order_id = tables.Column(verbose_name= 'ID Order',orderable=False,empty_values=())
seller_commission=tables.Column(verbose_name= 'Seller Commission(€)',orderable=False,empty_values=())
net_total=tables.Column(verbose_name= 'Net Total(€)',orderable=False,empty_values=())
vat=tables.Column(verbose_name= 'Vat(€)',orderable=False,empty_values=())
gross_total=tables.Column(verbose_name= 'Gross Total(€)',orderable=False,empty_values=())
class Meta:
#define the model
model = Woo_Order_Has_Products
template_name = 'django_tables2/bootstrap.html'
exclude = ('id','wholesale_price_category','printed_description','current_previous_price','vat_percentage','wholesale_product','price','quantity','woo_order')
sequence = ('woo_order_id','seller_commission','net_total','vat','gross_total')
фильтра фрагмента
class WoocommerceOrderProductsFilter(django_filters.FilterSet):
woo_order_id = django_filters.CharFilter(lookup_expr='exact')
class Meta:
model = Woo_Order_Has_Products
fields = ['woo_order_id']
Ключевым значением является woo_order_id, в моем случае 8 или 9.
Моя цель (и проблема) - искать только по woo_order_id .Я заметил, что проблема в классе фильтров, но я не могу понять, почему.