Возврат одного поля после создания через пост-запрос в django rest framework

Вот мое представление, основанное на классах:

class PurchaseAPICreate(generics.CreateAPIView):
    serializer_class = PurchaseSerializer

и сериализатор:

class PurchaseSerializer(serializers.ModelSerializer):
    class Meta:
        model = Purchase
        fields = "__all__"

Get-request возвращает мне все поля, но мне нужно только id. Я пробовал fields = ('id',). Но пост-запрос требует все поля для сериализации. Я сделал это, но думаю, что это не должно работать таким образом.

class PurchaseAPICreate(generics.CreateAPIView):
    serializer_class = PurchaseSerializer
    queryset = Shop.objects.all()
    def create(self, request, *args, **kwargs):
        queryset = self.get_queryset()
        serializer = PurchaseSerializer(queryset, many=True)
        return Response({
            'id': serializer.data[len(serializer.data)-1]['id']
        })

Как я могу получить только id правильным способом?

Вы можете установить write или read only в extra_kwargs в классе Meta сериализатора. Например,

class PurchaseSerializer(serializers.ModelSerializer):
    class Meta:
        model = Purchase
        fields = "__all__"
        extra_kwargs = {
             'field_1': {'write_only': True},
             'field...N': {'write_only': True},
             'id': {'read_only': True}
        }
Вернуться на верх