如果对象已存在,如何在DRF中创建多个对象忽略错误?

时间:2018-01-25 17:20:56

标签: django django-rest-framework

我有一个接受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()

关于如何更好地完成上述任务的任何建议都将受到赞赏。

0 个答案:

没有答案