Вложенные сериализаторы DRF возвращают пустой словарь

У меня есть два модала designation и UserModal

class DesignationModal(models.Model):
designation=models.CharField(max_length=100)

def __str__(self):
    return self.designation



class UserModal(AbstractUser):
username=models.CharField(max_length=300,unique=True)
password=models.CharField(max_length=300)
email=models.EmailField(max_length=300)
designation=models.ForeignKey(DesignationModal,on_delete=models.CASCADE,
                              related_name="desig",null=True)

def __str__(self):
    return self.username

у каждого пользователя есть только одно обозначение. Для этого я написал сериализатор.

class DesignationSerializer(serializers.Serializer):
class Meta:
    model=DesignationModal
    fields=['designation','id']

class UserSerializer(serializers.ModelSerializer):
designation=DesignationSerializer(read_only=True,many=False)
class Meta:
    model=UserModal
    fields=['id', 'username','designation']

Я получаю JSON-ответ следующего содержания

{
"status": true,
"data": [
    
    {
        "id": 3,
        "username": "akhil",
        "designation": {}
    }
]

}

нет значений в словаре, когда я переписывал код сериализатора следующим образом.

class UserSerializer(serializers.ModelSerializer):
designation=serializers.StringRelatedField()
class Meta:
    model=UserModal
    fields=['id', 'username','designation']

я получаю значения обозначений в виде строки

{
"status": true,
"data": [
   
    {
        "id": 3,
        "username": "akhil",
        "designation": "agent"
    }
]

}

Почему я не получаю значения предыдущим способом?

При использовании опции depth будут получены вложенные значения.

class UserSerializer(serializers.ModelSerializer):
    class Meta:
        model = UserModal
        fields = ['username', 'email', 'designation', ]
        depth = 1

Неправильное наследование для DesignationSerializer(serializers.Serializer) вам нужно изменить его таким образом

class DesignationSerializer(serializers.ModelSerializer):
    class Meta:
        model=DesignationModal
        fields=['designation','id']
Вернуться на верх