Как я могу использовать тот же сериализатор в представлении создания и списка - PullRequest
1 голос
/ 19 июня 2019

У меня есть PostSerializer, а в этом сериализаторе есть поле пользователя. Также у меня есть UserSerializer. Поэтому я хочу использовать UserSerializer в PostSerializer, как это

class PostSerializer(serializers.ModelSerializer):
    user = UserSerializer(many=False)
    class Meta:
         fields = ('user', 'title')

Но я получил ошибку при попытке использовать в CreateView, потому что я не отправляю данные UserSerializer, я отправляю user_id.

Мне нужно использовать один и тот же сериализатор в представлении создания и списка. Потому что я использую для ListCreateAPIView.

1 Ответ

2 голосов
/ 19 июня 2019

Когда мне приходится иметь дело с такого рода сериализацией, я делаю это так:

class PostSerializer(serializers.ModelSerializer):
    user_data = UserSerializer(
        read_only=True,
        source='user',
    )

    class Meta:
        fields = (
            'user',
            'user_data',
            'title',
        )

Вы получите user_data, когда читаете, и вам понадобится только идентификатор пользователя как userпри записи.

...