在我的api中,原始数据在发布请求时建议了这种结构。
{
"empID": "",
"fullname": "",
"contactnumber": []
}
在api列表中有一些示例结构:
{
"empID": "DJS1003",
"fullname": "Doe, John Smith",
"contactnumber": [
{
"contactnumber": "123456789"
},
{
"contactnumber": "321456879"
}
]
}
现在,发布帖子请求时我的对象数据如下所示:
contactnumber : Array[2]
0:"444-1234"
1:"0911-124-7854"
fullname:"John Doe"
empID:"1001"
我收到的错误是:
contactnumber:[{non_field_errors:[“无效数据。预计a 字典,但得到str。“]},...]
更新
这是我的model.py
class Employee(models.Model):
empID = models.CharField(primary_key=True, max_length= 50, null=False)
fullname = models.CharField(max_length=50)
class ContactNumber(models.Model):
empID = models.ForeignKey(Employee, related_name="contacts", to_field='empID', on_delete = models.CASCADE)
contactnumber = models.CharField(max_length=13)
这是我的serialzer.py
class ContactsSerializer(serializers.ModelSerializer):
class Meta:
model = ContactNumber
fields = (
'empID_id',
'contactnumber',
)
class EmployeeListSerializer(serializers.ModelSerializer):
contacts = ContactsSerializer(many=True)
class Meta:
model = Employee
fields = (
'empID',
'fullname',
)
答案 0 :(得分:2)
嗯,我认为错误很明确。
DRF期望的是:
{
"empID": "DJS1003",
"fullname": "Doe, John Smith",
"contactnumber": [
{
"contactnumber": "123456789"
},
{
"contactnumber": "321456879"
}
]
}
您要发送的内容:
{
"empID": "101",
"fullname": "John Doe",
"contactnumber": [
"444-1234",
"0911-124-7854"
]
}
所以,你需要你的JS发送一个dicts数组。 你也可以调整一些关系字段来实现这一点,但它有点复杂,因为你需要员工ID和电话号码来检查单一性。