Django邮递员错误此字段为必填字段
我要走了Django邮递员错误此字段为必填字段,django,Django,我要走了 {“特许经营”:[“此字段是必需的。”]} 当我通过向本地主机Django发送POST请求时 http://localhost:8000/api/franchise/charge/ 我将以下两个字段作为邮递员的尸体发送 key: price value: 1000 key: franchise value: 1 网址 看法 模型 序列化程序 class FranchiseChargeSerializer(RelationModelSerializer): fr
{“特许经营”:[“此字段是必需的。”]}
当我通过向本地主机Django发送POST请求时
http://localhost:8000/api/franchise/charge/
我将以下两个字段作为邮递员的尸体发送
key: price value: 1000
key: franchise value: 1
网址
看法
模型
序列化程序
class FranchiseChargeSerializer(RelationModelSerializer):
franchise = FranchiseSerializer(is_relation=True)
class Meta:
model = FranchiseCharge
fields = ('id','franchise','time','price')
@transaction.atomic
def create(self, validated_data):
instance = FranchiseCharge.objects.create(**validated_data)
return instance
我需要做什么来修复此问题?您正在使用嵌套序列化程序,因此它的数据应该是数据中的嵌套json对象
如我所见,您正在使用—如果它与链接文章中描述的对应—它还建议将相关的模型pk字段名放入嵌套的json中:
{
"price": 1000,
"franchise": {
"id": 1
}
}
对于常规DRF嵌套序列化程序-一个选项是使用不同的序列化程序进行读写。这样就可以在不使用嵌套序列化程序的情况下配置用于写入的序列化程序,只需在特许权字段中直接接受特许权id即可 检查嵌套序列化程序
class FranchiseCharge(models.Model):
franchise = models.ForeignKey(Franchise,null=True,on_delete=models.SET_NULL, default=1)
time = models.DateTimeField(default=timezone.now)
price = models.PositiveIntegerField(default=0)
class FranchiseChargeSerializer(RelationModelSerializer):
franchise = FranchiseSerializer(is_relation=True)
class Meta:
model = FranchiseCharge
fields = ('id','franchise','time','price')
@transaction.atomic
def create(self, validated_data):
instance = FranchiseCharge.objects.create(**validated_data)
return instance
{
"price": 1000,
"franchise": {
"id": 1
}
}