Я не могу использовать Django Filter для связанного иностранного ключа в модели Django
Я не могу отфильтровать обратное поле Foreign key в моем фильтре. Вот моя основная модель:
class VendorService(models.Model):
"""
Class for creating vendor services table models.
"""
vendor_id = models.ForeignKey(CustomUser, null=False, blank=False, on_delete=models.CASCADE)
service_id = models.ForeignKey(Service, null=False, blank=False, on_delete=models.CASCADE)
business_name = models.TextField(null=True, blank=False)
business_image = models.URLField(max_length=500, null=True, blank=False)
working_since = models.TextField(null=True, blank=False)
...
А вот моя вторая модель:
class ServiceSubTypeDetail(models.Model):
'''
Additional Service Details
'''
title = models.CharField(max_length=255, null=True, blank=True)
service_subtype = models.CharField(max_length=255, null=True, blank=True)
service = models.ForeignKey(VendorService, related_name='subtypes', on_delete=models.CASCADE, null=True, blank=True)
actual_price = models.FloatField(null=True, blank=True)
...
Моя вторая модель использует первую модель в качестве foreignkey
А вот мой класс фильтра, использующий библиотеку django-filter:
class ServiceFilter(filters.FilterSet):
service_type = filters.CharFilter(field_name="service_id__service_type", lookup_expr='icontains')
city = filters.CharFilter(field_name="city", lookup_expr='icontains')
price = filters.RangeFilter(field_name="vendorpricing__discounted_price")
subscription = filters.CharFilter(field_name="vendorplan__subscription_type", lookup_expr='iexact')
property_type = filters.CharFilter(field_name="subtypes__title", lookup_expr='icontains')
def __init__(self, *args, **kwargs):
super(ServiceFilter, self).__init__(*args, **kwargs)
# Dynamically add the price range filter based on the service_type
service_type = self.data.get('service_type', None)
if service_type == 'Venues':
self.filters['price'] = filters.RangeFilter(field_name="venue_discounted_price_per_event")
else:
self.filters['price'] = filters.RangeFilter(field_name="vendorpricing__discounted_price")
class Meta:
model = VendorService
fields = ['service_id__service_type', 'city', "vendorpricing__discounted_price", "venue_discounted_price_per_event", "subtypes__title"]
все остальные фильтры работают правильно, но property_type
не работает вообще. Я также пробовал использовать метод
Пожалуйста, помогите!!!