gpt4 book ai didi

python - Django休息框架: Validate a related field with a list of IDs

转载 作者:太空宇宙 更新时间:2023-11-03 17:12:38 24 4
gpt4 key购买 nike

给定端点 /cars,我想创建一个包含允许 parking 位置列表的汽车。

request.user.parkings.all() # Mike owns 2 parking locations, with ids 3 and 5

如果我使用 {"parkings": [3,5,6], ...} POST 到 /cars,API 应返回 400 bad请求,因为我使用的 parking 位置(id:6)不属于我。

github似乎没有人为此编写验证逻辑。如果没有 validate_parkings(self, value),我会得到状态代码 201。

现在我验证这一点的唯一方法是迭代验证函数中的列表value,这意味着我访问了数据库:

def validate_parkings(self, value):
# print type(value), value
u = self.context['request'].user
for p in value:
if not p.owner == u:
raise serializers.ValidationError("parking doesn't belong to you")
return value

我预计偶尔会有超过 100 个 parking 位。仅一次验证就选择了 100 多个选项,味道非常非常糟糕。

  • 为什么没有人为此编写验证?
  • 我应该在其他地方添加这个逻辑吗?

最佳答案

除了循环之外,您还可以尝试:

def validate_parkings(self, value):
user_parkings = set(self.context['request'].user.parkings.all())
post_parkings = set(value)
if not post_parkings.issubset(user_parkings):
raise serializers.ValidationError("parking doesn't belong to you")
return value

关于python - Django休息框架: Validate a related field with a list of IDs,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33941960/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com