我有一个接受JSON有效负载的POST端点 - 从中解析值,从这些值创建字典 - 然后将这些字典提供给模型序列化器来创建对象。
我不相信DRF是为了我在这里尝试做的事情,但这是一项要求。
使用以下示例的主要问题是:
目前,如果存在实例,Django将抛出有关unique_constraint字段错误的错误(完全如此)。但是,由于这是一种奇怪的终点,我需要忽略这些错误。因此,如果产品已经存在,而不是unique_constraint错误,它只会继续并创建平台。
此应用程序的其余部分将要求抛出错误,只有在此函数中我才会忽略这些错误。序列化程序在整个应用程序中共享,因此我不想在这种情况下触摸或覆盖序列化程序。
def job_start(request, platform_name="other", script_version="1"):
# load in data
json_data = json.loads(request.body.decode('utf-8'))
jenkins_vars = jenkins_lib(json_data)
# create dictionary of key/values required to create Product
product_dict = {}
product_dict['name'] = jenkins_vars.product
product_dict['product_age'] = jenkins_vars.age
#create object via DRF
serializer = ProductSerializer(data.product_dict)
if serializer.is_valid():
serializer.save()
# create dictionary of key/values required to create Product
platform_dict = {}
platform_dict['name'] = jenkins_vars.platform_name
platform_dict['platform'] = jenkins_vars.platform_id
#create object via DRF
serializer = PlatformSerializer(data.platform_dict)
if serializer.is_valid():
serializer.save()
关于如何更好地完成上述任务的任何建议都将受到赞赏。