Django 无法创建模型实例列表(体验)

Django 无法创建模型实例列表(体验),django,django-rest-framework,django-views,django-serializer,Django,Django Rest Framework,Django Views,Django Serializer,我正在尝试创建多个实例,即为同一用户创建体验,但无法创建。相反,我必须点击两次url才能添加多个数据 serializers.py class WorkExperienceSerialzer(BaseModelSerializer): hidden_fields_to_add = {"created_by": None, "user": None} class Meta(BaseModelSerializer.Meta): mo

我正在尝试创建多个实例,即为同一用户创建体验,但无法创建。相反,我必须点击两次url才能添加多个数据

serializers.py

class WorkExperienceSerialzer(BaseModelSerializer):

hidden_fields_to_add = {"created_by": None, "user": None}

    class Meta(BaseModelSerializer.Meta):
        model = WorkExperienceData
        fields = [
            "company",
            "designation",
            "description",
            "from_date",
            "to_date",
            "reference_name",
            "reference_mailid",
            "user",
            "id",
            ]
        extra_kwargs = {
            "user": {"read_only": True},
        }

    def __init__(self, *args, **kwargs):
        many = kwargs.pop('many', True)
        super(WorkExperienceSerialzer, self).__init__(many=many, *args, **kwargs)

    def create(self, validated_data, **kwargs):
            instance = super(WorkExperienceSerialzer, self).create(validated_data)
            return instance

    def update(self, instance, validated_data):
        instance = super(WorkExperienceSerialzer, self).update(
            instance, validated_data
            )
        return instance

    def get_default_value_for_field(self, field):

        value = super(WorkExperienceSerialzer, self).get_default_value_for_field(
            field
        )

        if not value:
            if field == "user":
                value = self.context["request"].user

        return value
class WorkExperienceViewSet(ViewListUpdateDeleteViewSet, BaseModelViewSet):
    queryset = WorkExperienceData.objects.all()
    serializer_class = WorkExperienceSerialzer

    def get_serializer(self, *args, **kwargs):
        if "data" in kwargs:
            data = kwargs["data"]

        # check if many is required
        if isinstance(data, list):
            kwargs["many"] = True

    return super(WorkExperienceViewSet, self).get_serializer(*args, **kwargs)
视图.py

class WorkExperienceSerialzer(BaseModelSerializer):

hidden_fields_to_add = {"created_by": None, "user": None}

    class Meta(BaseModelSerializer.Meta):
        model = WorkExperienceData
        fields = [
            "company",
            "designation",
            "description",
            "from_date",
            "to_date",
            "reference_name",
            "reference_mailid",
            "user",
            "id",
            ]
        extra_kwargs = {
            "user": {"read_only": True},
        }

    def __init__(self, *args, **kwargs):
        many = kwargs.pop('many', True)
        super(WorkExperienceSerialzer, self).__init__(many=many, *args, **kwargs)

    def create(self, validated_data, **kwargs):
            instance = super(WorkExperienceSerialzer, self).create(validated_data)
            return instance

    def update(self, instance, validated_data):
        instance = super(WorkExperienceSerialzer, self).update(
            instance, validated_data
            )
        return instance

    def get_default_value_for_field(self, field):

        value = super(WorkExperienceSerialzer, self).get_default_value_for_field(
            field
        )

        if not value:
            if field == "user":
                value = self.context["request"].user

        return value
class WorkExperienceViewSet(ViewListUpdateDeleteViewSet, BaseModelViewSet):
    queryset = WorkExperienceData.objects.all()
    serializer_class = WorkExperienceSerialzer

    def get_serializer(self, *args, **kwargs):
        if "data" in kwargs:
            data = kwargs["data"]

        # check if many is required
        if isinstance(data, list):
            kwargs["many"] = True

    return super(WorkExperienceViewSet, self).get_serializer(*args, **kwargs)
但当我试图传递如下数据时

         [
    {
        "company": "something",
        "designation": "something",
        "description": "something",
        "from_date": "2020-10-15",
        "to_date": "2020-11-14",
        "reference_name": "something",
        "reference_mailid": "something@gmail.com"
    },
    {
        "company": "nothing",
        "designation": "nothing",
        "description": "nothing",
        "from_date": "2020-10-25",
        "to_date": "2020-10-27",
        "reference_name": "nothing",
        "reference_mailid": "nothing@gmail.com"
    }
]
我得到了这样的东西

“ListSerializer”对象不可编辑


我试图通过添加many=True来更改视图,但它也不起作用

您的JSON有两个尾随逗号,这在JSON中是不允许的(但在Python中是允许的)

试试这个:

[
{
“公司”:“某物”,
“名称”:“某物”,
“描述”:“某物”,
“起始日期”:“2020-10-15”,
“截止日期”:“2020-11-14”,
“参考名称”:“某物”,
“参考邮件ID”:”something@gmail.com"
},
{
“公司”:“什么都没有”,
“名称”:“无”,
“说明”:“没有”,
“起始日期”:“2020-10-25”,
“截止日期”:“2020-10-27”,
“参考名称”:“无”,
“参考邮件ID”:”nothing@gmail.com"
}
]

您的JSON有两个尾随逗号,这在JSON中是不允许的(但在Python中是允许的)

试试这个:

[
{
“公司”:“某物”,
“名称”:“某物”,
“描述”:“某物”,
“起始日期”:“2020-10-15”,
“截止日期”:“2020-11-14”,
“参考名称”:“某物”,
“参考邮件ID”:”something@gmail.com"
},
{
“公司”:“什么都没有”,
“名称”:“无”,
“说明”:“没有”,
“起始日期”:“2020-10-25”,
“截止日期”:“2020-10-27”,
“参考名称”:“无”,
“参考邮件ID”:”nothing@gmail.com"
}
]