我不确定如何为预期的JSON文件序列化以下模型的数据。
以下是我的模特:
class CheckModel(models.Model):
check_name = models.CharField(max_length=1024,unique=True)
RulesToWaivers = models.ManyToManyField('RulesToWaivers',blank=True,default='default')
class RulesToWaivers(models.Model):
rule = models.ManyToManyField('Rule',blank=True )
waiver = models.ManyToManyField('Waiver',blank=True)
deliverables = models.ManyToManyField('Deliverables',blank=True)
class Waiver(CommonInfo):
desc = models.TextField(blank=True)
class Rule(models.Model):
rule_description = models.CharField(max_length=512,blank=True)
class Deliverables(CommonInfo):
name = models.CharField(max_length=1024,blank=True)
以下是我的序列化程序
class CheckModelSerializer(serializers.ModelSerializer):
rulewaiver=RuleWaiverSerializer(read_only=True,many=True)
class Meta:
model= CheckModel
fields = ('check_name','rulewaiver')
class RuleSerializer(serializers.ModelSerializer):
class Meta:
model=Rule
fields=('id','rule_description')
class WaiverSerializer(serializers.ModelSerializer):
class Meta:
model=Waiver
fields=('id','desc')
class DeliverbalesSerializer(serializers.ModelSerializer):
class Meta:
model=Deliverables
fields=('id','name')
我想以下列格式序列化数据
{
"p0_checks" : [
{
"check_id": "400",
"rules" : [
{
"rule_id" : "21_22",
"description": "checks blah blah",
"deliverables" : ["del1"],
"waivers": [
{
"description" : "I will waive everything"
},
{
"description" : "I will waive all warnings"
}
]
},
{
"rule_id" : "15217",
"description": "checks blah blah"
"req_ids" : ["lef"],
"waivers": [
{
"description" : "I will waive everything"
},
{
"description" : "I will waive all warnings"
}
]
}
]
},
我不确定如何从序列化器中获取这个json,有什么建议吗?
答案 0 :(得分:0)
尝试
class CheckModelSerializer(serializers.ModelSerializer):
rulewaiver=RuleWaiverSerializer(read_only=True,many=True)
class Meta:
model= CheckModel
fields = ('check_name','rulewaiver')
depth=2
您的观点
class CheckModelSet(viewsets.ModelViewSet):
queryset = CheckModel.objects.all()
serializer_class = CheckModelSerializer
def get_queryset(self):
return self.queryset
并通过添加参数?include=rulewaiver