django-rest框架检查序列化程序是否接收到None对象



我们的端点可以从多个模型返回,所有模型都有一些共同点,因此它们被映射到一个统一的响应,例如:

{
"reference": "November15-Inbound-1",
"note": null,
"inbound_date": "2018-11-14",
"inbound_lines": [
{
"article_code": "VBP_A",
"quantity": 1
}
]

}

现在,当进行检索或更新调用时,对象可能不存在:

try:
return AppInbound.objects.filter(customer__code=self.customer.code).get(**kwargs)
except AppInbound.DoesNotExist:
return None

然后,这个"None"返回到我们的序列化程序,它会产生以下结果:

{
"reference": "",
"note": "",
"inbound_date": null,
"inbound_lines": []
}

有没有一种方法可以检查序列化程序是否接收到None对象作为输入?无需为每个端点执行特定代码,如:

if serialized_data['reference'] == "":
raise Http404

您可以在序列化程序中重写get_initial()并检查实例是否为None。此方法负责返回每个字段的初始状态。

def get_initial(self):
if self.instance is None:
raise Http404
return super().get_initial()

相关内容

  • 没有找到相关文章

最新更新