DRF中如何让Project列表接口返回的团队领导数据包含其下属成员信息
DRF中如何让Project列表接口返回的团队领导数据包含其下属成员信息
我来帮你解决这个问题~
你现在看不到team_member数据的核心原因是ProjectSerializer里的depth=1参数局限性:它只能处理正向外键的一层展开,但team_member是Employee模型通过pmid反向关联出来的下属集合,depth不会自动序列化这种反向关联字段。
解决思路很直接,我们不用依赖depth,而是直接在ProjectSerializer里显式指定用你已经写好的EmployeeSerializer来序列化teamleaderid字段——因为EmployeeSerializer已经配置了team_member的嵌套序列化逻辑,这样就能带出下属数据了。
修改你的serializers.py中的ProjectSerializer:
class ProjectSerializer(serializers.ModelSerializer): # 显式使用包含team_member的EmployeeSerializer序列化团队领导 teamleaderid = EmployeeSerializer() class Meta: model = Project fields = '__all__' # 删掉depth=1,因为我们已经自定义了字段序列化方式
修改完成后,请求ProjectList接口就能得到你想要的返回结构了:
[ { "pid": "p1", "description": "p1 project", "teamleaderid": { "eid": "1", "name": "n1", "pmid": null, "team_member": [ { "eid": "5", "name": "n5", "pmid": "1" } ] } } ]
简单说就是:EmployeeSerializer已经帮我们处理了领导和下属的关联,现在只需要让ProjectSerializer用它来序列化团队领导字段,就能自动带出下属成员的数据啦。
备注:内容来源于stack exchange,提问作者Relax ZeroC
相关产品推荐
相关产品推荐

