【问题标题】:Django Rest Framework - save a formset?Django Rest Framework - 保存表单集?
【发布时间】:2015-04-20 18:50:07
【问题描述】:

有没有办法优雅地保存表单集?我尝试将所有数据推入序列化程序,但它的验证数据为空,因此没有创建任何内容:

这是原样的表单集数据:

每个对象都是这个序列化器:

class RAGReportAtomSerializer(serializers.ModelSerializer):
    marker = RAGMarkerSerializer()
    item = RAGItemsSerializer()

    class Meta:
        model = RAGReportAtom
        fields = (
            'id',
            'item',
            'marker',
            'comments'
        )

class RAGMarkerSerializer(serializers.ModelSerializer):
    class Meta:
        model = DicRAGMarker
        fields = (
            'name',
            'color_code',
            'icon'
        )


class RAGItemsSerializer(serializers.ModelSerializer):
    class Meta:
        model = DicRAGItem
        fields = (
            'name',
            'description',
        )

我正在尝试这样保存它:

def create(self, request, project_id):
        serialized_data = RAGReportAtomSerializer(data=request.DATA, many=True)
        if serialized_data.is_valid():
            serialized_data.save()
            msg = MessageSerializer(Message(title='OK', body="Milestone successfully created!"))
            return Response(msg.data, status=HTTP_201_CREATED)
        else:
            return Response(serialized_data.errors, status=HTTP_400_BAD_REQUEST)

【问题讨论】:

    标签: django django-rest-framework formset


    【解决方案1】:

    我做了一个小东西可以完成这项工作,但它并不能解决问题。以防万一这可以帮助某人。

        data = {}
        for item in request.DATA:
            match = re.match("^form-(\d)-(.+)", item)
            if match:
                match_form = match.group(1)
                match_key = match.group(2)
                if not data.get(match_form, None):
                    data[match_form] = {}
                data[match_form][match_key] = request.DATA[item]
    
        for item in data:
            serialized_data = RAGReportAtomBaseSerializer(data=data[item])
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-01-11
      • 2021-10-06
      相关资源
      最近更新 更多