Tôi muốn lọc các tham số truy vấn trong API REST của mình - see django docs on this. Tuy nhiên, một thông số tôi muốn lọc theo chỉ có sẵn thông qua một mô hình @propertySử dụng các phương pháp tùy chỉnh trong bộ lọc bằng django-rest-framework
dụ models.py:
class Listing(models.Model):
product = models.OneToOneField(Product, related_name='listing')
...
@property
def category(self):
return self.product.assets[0].category.name
Đây là thiết lập cho API Liệt kê của tôi phù hợp với 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
Làm cách nào để lọc danh sách listing.category một cách thích hợp? Nó không có sẵn trên mô hình danh sách trực tiếp.
Đối với trường hợp này, câu trả lời này của câu hỏi khác có thể trợ giúp: http://stackoverflow.com/questions/14258338/django-rest-framework-filtering/35506369#35506369 – iankit