[英]DRF - How to using serializer to load related data
我有一個與自己相關的表Employee
,而Project
表具有與Employee
表相關的外鍵。
class Employee(models.Model):
eid = models.CharField(primary_key=True, max_length=10)
name = models.CharField(max_length=10)
pmid = models.ForeignKey('self', models.RESTRICT, related_name='team_member', blank=True, null=True,)
class Project(models.Model):
pid = models.CharField(primary_key=True, max_length=10)
description = models.CharField(max_length=100)
teamleaderid = models.ForeignKey(Employee, models.RESTRICT)
和serializers.py
class SubEmployeeSerializer(serializers.ModelSerializer):
class Meta:
model = Employee
fields = '__all__'
class EmployeeSerializer(serializers.ModelSerializer):
team_member = SubEmployeeSerializer(many=True, read_only=True)
class Meta:
model = Employee
fields = '__all__'
class ProjectSerializer(serializers.ModelSerializer):
class Meta:
model = Project
fields = '__all__'
depth = 1
views.py
class ProjectList(generics.ListAPIView):
queryset = Project.objects.all()
serializer_class = ProjectSerializer
我希望在請求ProjectListView
時,我可以使用team_member
數據獲得teamleaderid
,但我不知道為什么team_member
沒有顯示在我的回復中。
[
{
"pid": "p1",
"description": "p1 project",
"teamleaderid": {
"eid": "1",
"name": "n1",
"pmid": null,
###### how to show below data ###
# "team_member": [ #
# { #
# "eid": "5", #
# "name": "n5", #
# "pmid": "1" #
#} #
#################################
}
}
]
試試這個配置,
class EmployeeSerializer(serializers.ModelSerializer):
team_member = SubEmployeeSerializer(read_only=True, source="pmid")
class Meta:
model = Employee
fields = '__all__'
class ProjectSerializer(serializers.ModelSerializer):
teamleaderid = EmployeeSerializer(read_only=True)
class Meta:
model = Project
fields = '__all__'
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.