Django 无法创建模型实例列表(体验)
我正在尝试创建多个实例,即为同一用户创建体验,但无法创建。相反,我必须点击两次url才能添加多个数据 serializers.pyDjango 无法创建模型实例列表(体验),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
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"
}
]