我有一个ViewSet
,它的filter_class
是这样的:
class OrderFilter(django_filters.FilterSet):
......
product = django_filters.ModelMultipleChoiceFilter(
field_name='product',
queryset=Product.objects.all(),
)
有了这个,我可以指定一个产品ID,并发出一个/orders/?product=<product_id>
这样的获取请求。
在三种情况下,我看到以下行为:
product_id
的订单,它将返回这些订单...好!product_id
的 NO 订单,它将成功返回200,结果为空(例如{count: 0, next: null, previous: null, results: [ ]}
...好!400 Bad Request
的{{1}}和以下响应:
ValidationError
... wtf!最后一种情况对我来说很奇怪。如果(a)不存在给定的对象关系并且(b)对象本身不存在,响应是否应该相同?这种双重行为似乎会向FE指示该产品是否存在,也许他们不应该知道该信息。
如何更改过滤器,使其总是 返回200,且结果集在两种情况下均为空?
我在{ product: [ "Select a valid choice. %(value)s is not one of the available choices." ]}
和Django==1.11.15
上
谢谢!