Проблема с Django-фильтром

У меня такая проблема, поэтому я сделал фильтрацию по категориям на моей странице AllProducts и она отлично работает (django-filter). Дело в том, что стартап, в котором я работаю, имеет еще одну Django-модель, которая называется ProductInStore, и это дополнительная модель, связанная с Product, которая должна показывать все товары, которые есть в определенном магазине.

class Product(models.Model):
    name = models.CharField(max_length=200)
    slug = models.SlugField(max_length=200, unique=True, null=False, editable=False)
    created_at = models.DateTimeField(editable=False, default=timezone.now)
    updated_at = models.DateTimeField(default=timezone.now)
    product_category = models.ManyToManyField(EcommerceProductCategory)
    description = RichTextField(max_length=2000, null=True, blank=True)
    product_producer = models.ForeignKey('ProductProducer', on_delete=models.CASCADE)
    creator = models.ForeignKey('users.CustomUser', on_delete=models.CASCADE, null=True, blank=True, related_name='product_creator')
    points_from_reviews = models.DecimalField(max_digits=6, decimal_places=2, default=0, help_text='Średnia ocena produktu')
    unique_id = models.CharField(max_length=256, unique=True)
    type_of_unique_id = models.CharField(max_length=64)
    product_img = models.FileField(upload_to='ecommerce_product_img/', null=True, blank=True)
class ProductInStore(models.Model):
    product = models.ForeignKey('Product', on_delete=models.CASCADE)
    store = models.ForeignKey('Store', on_delete=models.CASCADE)
    price = models.DecimalField(max_digits=6, decimal_places=2, default=0, help_text='Cena w sklepie')
    currency = models.CharField(max_length=4)
    url = models.CharField(max_length=200)
    created_at = models.DateTimeField(editable=False, default=timezone.now)
    updated_at = models.DateTimeField(default=timezone.now)

Дело в том, что когда я фильтрую по категориям в модели продукта, он работает безупречно, и вот как это выглядит в модели продукта

def all_products(request):
    product = Product.objects.all().order_by('-created_at')
    search_filter = ProductFilter(request.GET)
    product = search_filter.qs
    paginator = Paginator(product, 20)
    page_number = request.GET.get('page')
    page_obj = paginator.get_page(page_number)

    context = {
        'page_obj': page_obj,
        'search_filter': search_filter,
    }
    return render(request, 'ecommerce/all_products.html', context)

class ProductFilter(django_filters.FilterSet):
    name = django_filters.CharFilter(lookup_expr='icontains', label='Nazwa')
    product_category = django_filters.ModelChoiceFilter(queryset=EcommerceProductCategory.objects.all())

    class Meta:
        model = Product
        fields = ['product_category']

    def __init__(self, *args, **kwargs):
        super(ProductFilter, self).__init__(*args, **kwargs)
        self.filters['product_category'].label = "Wszystkie kategorie"

Но я понятия не имею, как изменить queryset (или фильтр) на фильтре ProductInStore. Вот как это выглядит сейчас:

class ProductStoreFilter(django_filters.FilterSet):
    name = django_filters.CharFilter(lookup_expr='icontains', label='Nazwa')
    product_category = django_filters.ModelChoiceFilter(queryset=EcommerceProductCategory.objects.all())

    class Meta:
        model = ProductInStore
        fields = ['product_category']

    def __init__(self, *args, **kwargs):
        super(ProductStoreFilter, self).__init__(*args, **kwargs)
        self.filters['product_category'].label = "Wszystkie kategorie"
def all_products_in_store(request, slug):
    products_all = ProductInStore.objects.all().filter(store__slug=slug).order_by('-created_at')
    featured_products = ProductInStore.objects.all().filter(store__slug=slug).order_by('-created_at')[:3]
    store_filter = ProductStoreFilter(request.GET)
    products_all = store_filter.qs
    paginator = Paginator(products_all, 20)
    page_number = request.GET.get('page')
    page_obj = paginator.get_page(page_number)
    context = {
        'store_name': Store.objects.get(slug=slug).name,
        'page_obj': page_obj,
        'featured_products': featured_products,
        'store_filter': store_filter,
    }
    return render(request, "ecommerce/all_products_in_store.html", context=context)

Но я знаю, что это не будет работать, потому что это не имеет смысла, я просто не знаю, как я могу изменить это, чтобы это работало. Теперь, когда я пытаюсь отфильтровать что-то на сайте, он выдает мне

FieldError at /ecommerce/wszystkie-produkty/sklep/sadfdfsadfs
Cannot resolve keyword 'product_category' into field. Choices are: created_at, currency, id, price, product, product_id, store, store_id, updated_at, url

Возможно, это тривиальная проблема, но я очень сильно с ней мучаюсь. Я буду очень благодарен, если кто-нибудь сможет мне помочь.

Вернуться на верх