django rest框架的django-filter:in运算符无法正常工作(它认为这是一个选择字段?)

时间:2019-11-20 10:16:35

标签: django-rest-framework django-filters

假设我们有Pizza和Topping模型,而Topping则具有Pizza的外键字段。

我们有一个django rest框架视图集,该视图集返回顶部。

我们希望能够询问具有给定ID的披萨中使用的浇头的问题,例如:

GET /toppings?pizza_id__in=1,2,456

我们有

class ToppingsFilter(django_filters.rest_framework.FilterSet):

    class Meta:
        strict = False
        fields = {
            'id': ['exact'],
            'pizza_id': ['exact', 'in']
        }

问题是当使用不存在的pizza_id调用GET时,出现以下错误:

{
    "pizza_id__in": [
        "Select a valid choice. That choice is not one of the available choices."
    ]
}

如果传递有效的比萨饼ID(现有的比萨饼ID),则可以按预期运行!

这是默认行为吗?这似乎没有任何意义。为什么还要对GET操作进行此类验证。 GET / toppings?pizza_id__in = 1,2,435456的意图显然是选择以下对象:

SELECT from toppings where pizza_id IN (1,2,435456)

1 个答案:

答案 0 :(得分:0)

我想我会忍受的。