【发布时间】:2018-04-08 21:17:25
【问题描述】:
我目前正在覆盖 ModelViewSet 的 list 方法并使用 filter_fields 但我意识到过滤器是在列表之前应用的,所以我的 list 方法没有被查询参数过滤。是否可以在列表方法之后应用此过滤器?
class AccountViewSet(viewsets.ModelViewSet):
serializer_class = AccountSerializer
filter_fields = ('country__name')
filter_backends = (django_filters.rest_framework.DjangoFilterBackend,)
queryset = Account.objects.all()
def list(self, request):
if request.user.is_superuser:
queryset = Account.objects.all()
else:
bank_user = BankUser.objects.get(user=request.user)
queryset = Account.objects.filter(bank=bank_user.bank)
serializer = self.get_serializer(queryset, many=True)
return Response(serializer.data)
当我使用此 URL http://localhost:8000/api/account/?country__name=Germany 请求时,它会返回所有按银行但不按国家/地区过滤的帐户。
【问题讨论】:
标签: django django-rest-framework django-filter