我们的端点可以从多个模型返回,所有模型都有一些共同点,因此它们被映射到一个统一的响应,例如:
{
"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()