DRF не вызывает метод post() при получении POST-запроса
У меня есть такой набор представлений:
class MyViewSet(CreateAPIView, RetrieveModelMixin, ListModelMixin, GenericViewSet):
queryset = MyModel.objects.all()
serializer_class = MySerializer
def post(self, request, *args, **kwargs):
import pdb; pdb.set_trace()
class MySerializer(serializers.HyperlinkedModelSerializer):
class Meta:
model = MyModel
fields = ['id', 'field1', 'field2'] #only field1 is required in the model
GET-запросы для list и retrieve работают отлично. Когда я делаю POST запрос, посылая field1 я получаю статус 201 и новая запись добавляется в базу данных, так что это тоже работает .
Но мой метод MyViewSet.post(), который должен перезаписать тот же метод из generics.CreateAPIView, так и не вызывается.
Мало того, я пытался добавить pdb.set_trace(), буквально внутри generics.CreateAPIView.post() и в функции CreateModelMixin.create() и ни одна из них не остановилась, как только я сделал POST запрос.
Значит, что-то еще обрабатывает этот POST-запрос и вставляет в БД, я просто не знаю что. И как я могу переписать это, чтобы настроить то, что должно быть сделано с почтовым запросом?
PS.: Также, я не думаю, что это проблема маршрутизации, мой urls.py:
from rest_framework import routers
from myapp.views import MyViewSet, AnotherViewSet
router = routers.DefaultRouter()
router.register(r'route_one', MyViewSet)
router.register(r'route_two', AnotherViewSet)
Я думаю, что вам нужно использовать именно этот класс, чтобы использовать POST api.
class MyViewSet(CreateModelMixin, ListModelMixin, generics.GenericAPIView):
queryset = MyModel.objects.all()
serializer_class = MySerializer
def post(self, request, *args, **kwargs):
return self.create(request, *args, **kwargs)
Надеюсь, это может помочь.