Как сериализовать две модели в django rest framework для получения вложенных json-данных
Привет всем у меня есть две модели одна это Имя и вторая это Роль, я соединял две или более модели несколько раз, но в этот раз ответ был другим, здесь я поделился своей моделью и ожидаемым ответом, пожалуйста помогите мне.
models.py
class Name(BaseModel):
first_name=models.CharField(max_length=255,null=True, blank=True)
middle_name=models.CharField(max_length=255,null=True, blank=True)
last_name=models.CharField(max_length=255,null=True, blank=True)
class Role(BaseModel):
role=models.CharField(max_length=255,null=True, blank=True)
name=models.ForeignKey(Name, models.CASCADE, null=True, blank=True)
serializer.py
class RoleSerializer(serializers.ModelSerializer):
name=NameSerializer()
class Meta:
model = Role
fields = "__all__"
Текущий ответ
{
"id": 1,
"name": {
"id": 1,
"first_name": "thor",
"middle_name": "",
"last_name": ""
}
}
Ожидаемый ответ
{
"id": 1,
"first_name": "thor",
"middle_name": "",
"last_name": ""
"role": {
"id": 1,
"name": 1
}
}
Вы сделали работу вверх ногами. Вы должны использовать сериализатор имен в качестве родителя и использовать его.
class RoleSerializer(serializer.ModelSerializer):
class Meta:
model = Role
fields= "__all__"
class NameSerializer(serializers.ModelSerializer):
role=RoleSerializer()
class Meta:
model = Name
fields = ['id','first_name','last_name','middle_name','role']