django_filter ModelMultipleChoiceFilter-错误的错误请求

时间:2018-10-29 18:54:31

标签: django django-filter

我有一个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: [ ]} ...好!
  • 如果该product_id不存在 ,它将返回带有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

谢谢!

0 个答案:

没有答案