Как получить поле из другой модели в фильтр в filter.py?
Есть ли способ, как получить поле из другой модели в мой фильтр, который используется в моем шаблоне? Я пытаюсь фильтровать по имени_категории из модели категории в модели склада, которая связана с моделью категории моделью продукта.
Когда я пробую в shell, отношение работает:
Warehouse.objects.filter(product__category__category_name__icontains="shoes")
Но когда я использую аналогичный код в filter.py, я получаю пустое поле вместо поля для категории (другие поля из фильтра работают, поэтому фильтр в порядке):
class WarehouseDataFilter(django_filters.FilterSet):
product = django_filters.CharFilter(label="Product", field_name="product__name", lookup_expr='icontains')
category = django_filters.CharFilter(label="Kategorie", field_name="product__category__category_name", lookup_expr="icontains" ),
pyear = django_filters.NumberFilter(label="Rok výroby", field_name="product__pyear")
class Meta:
model = Warehouse
fields = ("product", "pieces")
attrs={"a": {"class": "orange"}, "thead": {"class": "orange"}}
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
self.form.helper = WarehouseDataFilterFormHelper()
models.py
class Warehouse(models.Model):
product = models.ForeignKey(Product, on_delete=models.CASCADE, null=True, blank=True)
pieces = models.IntegerField("Quantity", null=True, blank=True)
updated_on = models.DateTimeField(auto_now=True, null=True)
class Product(models.Model):
name = models.CharField("Product", max_length=150)
pyear = models.IntegerField("Rok Výroby", null=True, blank=True)
drop = models.IntegerField("Drop", null=True, blank=True)
productgroup = models.ForeignKey(ProductGroup, on_delete=models.CASCADE, null=True, blank=True)
category = models.ForeignKey(Category, on_delete=models.CASCADE, null=True, blank=True)
class Category(models.Model):
category_name = models.CharField("Category", max_length=100, blank=True, null=True)