发布于2023-03-21 14:23 阅读(569) 评论(0) 点赞(22) 收藏(2)
我的序列化器类
class ConditionSerializers(serializers.ModelSerializer):
class Meta:
model = TblCondition
fields = ['id','operator','condition','relation']
class ConditionSerializers(serializers.ModelSerializer):
relation_with=ConditionSerializers(many=False)
class Meta:
model = TblCondition
fields = ['id','operator','relation_with','condition','relation']
class RuleSerializers(serializers.ModelSerializer):
conditiontbl=ConditionSerializers(many=True)
class Meta:
model = TblRule
fields = ['rule_table_no','rule_no','rule_name','columns','data_file','true','conditiontbl' ]
我的模型课
class TblRule(models.Model):
rule_table_no=models.AutoField(primary_key=True)
rule_no=models.IntegerField(blank=False)
rule_name=models.CharField(max_length=100,blank=False)
columns=models.CharField(max_length=100)
data_file=models.CharField(max_length=100)
true=models.CharField(max_length=100)
class TblCondition(models.Model):
rule=models.ForeignKey(TblRule, on_delete=models.CASCADE,related_name='conditiontbl')
operator=models.CharField(max_length=100)
condition=models.CharField(max_length=100)
relation=models.CharField(max_length=50,blank=True)
relation_with=models.OneToOneField(to='self',null=True,blank=True,on_delete=models.CASCADE)
通过调用 ruletbl 模型在邮递员 API 中获取这些结果
[
{
"rule_table_no": 2,
"rule_no": 1,
"rule_name": "Age Discritization",
"columns": "Age",
"data_file": "Data1",
"true": "Teen",
"conditiontbl": [
{
"id": 4,
"operator": ">",
"relation_with": null,
"condition": "15",
"relation": ""
},
{
"id": 5,
"operator": "<=",
"relation_with": {
"id": 4,
"operator": ">",
"condition": "15",
"relation": ""
},
"condition": "25",
"relation": "and"
}
]
},
{
"rule_table_no": 3,
"rule_no": 1,
"rule_name": "Age Discritization",
"columns": "Age",
"data_file": "Data1",
"true": "Young",
"conditiontbl": []
}
]
我想要的结果:
[
{
"rule_table_no": 2,
"rule_no": 1,
"rule_name": "Age Discritization",
"columns": "Age",
"data_file": "Data1",
"true": "Teen",
"conditiontbl": [
{
"id": 7,
"operator": ">",
"relation_with": null,
"condition": "15",
"relation": ""
},
{
"id": 6,
"operator": "<=",
"relation_with": {
"id": 7,
"operator": ">",
"relation_with":
{
"id": 7,
"operator": ">",
"relation_with": null,
"condition": "15",
"relation": ""
},
"condition": "15",
"relation": "or"
},
"condition": "25",
"relation": "and"
}
]
},
{
"rule_table_no": 3,
"rule_no": 1,
"rule_name": "Age Discritization",
"columns": "Age",
"data_file": "Data1",
"true": "Young",
"conditiontbl": []
}
]
您可以在 ruletbl 模型中看到 conditiontbl list fileds(例如在 JASON 结果中),在 conditiontbl filed 中我们有带有 fileds(“relation_with”)的 tblcondition 模型的对象,并且这个 relation_with filed 再次引用它自己的 tblcondition 模型,您可以看到它的第二个目的。我希望这个在 relation_with 文件中引用到它自己的 conditiontbl 模型是递归的。任何解决方案?
在 Django 中,可以通过创建自定义序列化器类来实现递归序列化,该序列化器类扩展 BaseSerializer 类并覆盖 to_representation() 方法
作者:黑洞官方问答小能手
链接:https://www.pythonheidong.com/blog/article/1944127/f8c22aa0544604281fe1/
来源:python黑洞网
任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任
昵称:
评论内容:(最多支持255个字符)
---无人问津也好,技不如人也罢,你都要试着安静下来,去做自己该做的事,而不是让内心的烦躁、焦虑,坏掉你本来就不多的热情和定力
Copyright © 2018-2021 python黑洞网 All Rights Reserved 版权所有,并保留所有权利。 京ICP备18063182号-1
投诉与举报,广告合作请联系vgs_info@163.com或QQ3083709327
免责声明:网站文章均由用户上传,仅供读者学习交流使用,禁止用做商业用途。若文章涉及色情,反动,侵权等违法信息,请向我们举报,一经核实我们会立即删除!