Как сериализовать две модели в 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']
Вернуться на верх