PrimaryKeyRelatedField не сериализует объект

У меня есть такая игровая модель:

class Game(models.Model):
    owner = models.ForeignKey(User, null=True, blank=True, on_delete=models.SET_NULL)
    name = models.CharField(max_length=255)
    slug = models.SlugField()
    ...

И сериализатор вроде этого:

class GameSerializer(serializers.ModelSerializer):
    owner = serializers.PrimaryKeyRelatedField(many=False, read_only=True)
    class Meta:
        model = Game
        fields = (
            "id",
            "name",
            "description",
            "owner"
        )

Когда я делаю запрос, я получаю следующее:

description: "TestDescription"
name: "TestName"
owner: 1

Я ожидал, что owner будет словарем с полями типа email, username и так далее. Что не так?

PrimaryKeyRelatedField даст вам только первичный ключ (https://www.django-rest-framework.org/api-guide/relations/#primarykeyrelatedfield), а не dict. Что вы хотите сделать, так это определить:

class UserSerializer(serializers.ModelSerializer):
    class Meta:
        model = User
        fields = ("username", "email", "first_name", "last_name")

И используйте это в GameSerializer:

class GameSerializer(serializers.ModelSerializer):
    class Meta:
        model = Game
        fields = ("id", "name", "description", "owner")

    owner = UserSerializer()
Вернуться на верх