Возврат одного поля после создания через пост-запрос в 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}
}