REST API - see django docs on this adresindeki sorgu paramlarına karşı filtre uygulamak istiyorum. Ancak, ben göre filtreleme isteyen bir parametresi bir modeli @ özellik aracılığıyla kullanılabilirDjango-rest-framework ile filtrede özel yöntemler kullanma
örnek models.py: Burada
class Listing(models.Model):
product = models.OneToOneField(Product, related_name='listing')
...
@property
def category(self):
return self.product.assets[0].category.name
django-filter docs
class ListingFilter(django_filters.FilterSet):
product = django_filters.CharFilter(name='product__name')
category = django_filters.CharFilter(name='category') #DOES NOT WORK!!
class Meta:
model = Listing
fields = ['product','category']
class ListingList(generics.ListCreateAPIView):
queryset = Listing.objects.all()
serializer_class = ListingSerializer
filter_class = ListingFilter
uyarınca benim İlanı API için hazırlandığında
Nasıl listing.category tarafından uygun şekilde filtreleyebilirim? Liste modelinde doğrudan mevcut değildir.
def filter_category(queryset, value):
if not value:
return queryset
queryset = ...custom filtering on queryset using 'value'...
return queryset
Liste filtresi gibi görünmelidir: kategori parametresinin değerini kullanarak bir Sorgu Kümesi filtreleyen bir yöntem tanımlayan see django-filter docs
İlk -
, başka bir soru bu cevap olabilir yardım: http://stackoverflow.com/questions/14258338/django-rest-framework-filtering/35506369#35506369 – iankit