Django сериализует только одно поле вместо всей модели в связанных полях (только чтение) - PullRequest
1 голос
/ 09 июля 2019

Я хотел бы сериализовать вложенное поле модели, которое имеет только одно поле, используя поле вложенной модели напрямую.

Следующий код должен объяснить ситуацию:

# models
class Tag(models.Model):
    title = models.CharField(max_length=255, unique=True)

class Scene(models.Model):
    title = models.CharField(max_length=255, unique=True)
    tags = models.ManyToManyField(Tag, blank=True)

# serializers
class SceneSerializer(serializers.ModelSerializer):
    class Meta:
        model = Scene
        fields = ('id', 'title', 'tags',)
        read_only_fields = ('tags',)

, который выдает следующее, если используется:

{
    "id": 1,
    "title": "yolol",
    "tags": [
        1,
        2
    ]
}

Я хотел бы получить следующий вывод (используя Tag.title вместо первичного ключа):

{
    "id": 1,
    "title": "A Scene",
    "tags": [
        "3D",
        "Industry"
    ]
}

Как мне написать сериализатор, который делает это для тегов?

1 Ответ

1 голос
/ 09 июля 2019

Вы можете использовать SlugRelatedField:

class SceneSerializer(serializers.ModelSerializer):
    tags = serializers.SlugRelatedField(
        many=True,
        read_only=True,
        slug_field='title'
     )
    class Meta:
        model = Scene
        fields = ('id', 'title', 'tags',)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...