django-rest-framework - django rest 框架的 django-filter:in 运算符无法正常工作(它认为这是一个选择字段?)
问题描述
假设我们有 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(现有的),它会按预期工作!
这是默认行为吗?这似乎没有任何意义。为什么它甚至对 GET 操作进行此类验证。GET /toppings?pizza_id__in=1,2,435456 的意图显然是选择以下对象:
SELECT from toppings where pizza_id IN (1,2,435456)
解决方案
推荐阅读
- java - 透明模糊 JFRame?
- applescript - Applescript 值增量检测
- firebase - firebase 如何部署?
- android-sqlite - 如何使用带有两个参数的android SQLITE SELECT?
- java - 使用 Jolt 转换复杂的 Json 数组
- c# - 在 Blazor Server 应用程序中,是否可以将 GraphServiceClient 注入到作用域服务中?
- sql - SQL 中是否有返回 1 行的函数,其中每个活动的 datediff = min?
- python - 使用 xml.etree.ElementTree 捕获所有 XML 元素路径
- python - 如何为 discord.py 命令创建包装函数?
- cryptocurrency - 如何从未来获取 EOS 块?