私信  •  关注

sneha salvi

sneha salvi 最近回复了
6 年前
回复了 sneha salvi 创建的主题 » django:断言错误'create()'未返回对象实例

已更新serializer.py文件以包含以下代码

class ReceiptLogSerializerClass(serializers.Serializer):
    #Fields
    def create(self, validated_data):
        raw_data_list = []
        many = isinstance(validated_data, list)
        if many:
            raw_data_list = validated_data
        else:
            raw_data_list.append(validated_data)
        result_id = 1
        for data_row in raw_data_list:
            new_command_run_entry = {
            'team_name': data_row.get('team_name'),
            'suite_name': data_row.get('suite_name'),
            'suite_run_id': data_row.get('suite_run_id'),
            'case_name': data_row.get('case_name'),
            'command_name': data_row.get('command_name'),
            'command_run_id': data_row.get('command_run_id'),
            'run_start': data_row.get('run_start'),
            'run_end': data_row.get('run_end'),
            'result': data_row.get('result'),
            'run_status': data_row.get('run_status')
        }
       response = TestCaseCommandRunSerializer.create(TestCaseCommandRunSerializer(),validated_data= new_command_run_entry)
       new_command_run_result_entry = {
            'suite_run_id': data_row.get('suite_run_id'),
            'command_run_id': data_row.get('command_run_id'),
            'rule_name': data_row.get('rule_name'),
            'result_id': result_id,
            'result': data_row.get('result'),  # PASS or FAIL
            'expected_values': data_row.get('expected_values'),
            'actual_values': data_row.get('actual_values'),
            'report_values': data_row.get('report_values'),
            'extended_values': data_row.get('extended_values'),
        }
        response = TestCaseCommandRunResultsSerializer.create(TestCaseCommandRunResultsSerializer(),validated_data= new_command_run_result_entry)
        logger.info(" new_command_run_result_entry response %s" % response)
        result_id += 1
    return validated_data

我没有正确地对数据进行反序列化,因此遇到了多个问题。 返回已验证的数据 更正了所有错误,现在我可以通过单个API将()数据发布到多个模型。

用于在单个API调用中发布多个有效负载,在receiptlogviewset的下面行中添加

    def get_serializer(self, *args, **kwargs):
        if "data" in kwargs:
            data = kwargs["data"]
        if isinstance(data, list):
            kwargs["many"] = True
    return super(ReceiptLogViewSet, self).get_serializer(*args, **kwargs)

裁判: Django rest framework cannot deal with multple objects in model viewset