Я пытаюсь сопоставить GET/PUT/DELETE
методы HTTP с одной конечной точкой REST API Django.Я могу переопределить метод get_queryset
по умолчанию, чтобы по существу выполнить запрос GET
для определенного поля модели в БД, но я не уверен, какие методы класса следует переопределить для PUT/DELETE
.Если я использую postman
для выполнения PUT/DELETE
, я получаю ошибку method not allowed
.
Models.py
class Computer(models.Model):
computer_id = models.IntegerField(unique=True)
city = models.CharField(max_length=50)
description = models.TextField(null=True, blank=True)
def __str__(self):
return str(self.computer_id)
Urls.py
router.register(r'computer/(?P<comp_id>[0-9]+)', ComputerViewSet, base_name='computers')
Views.py
class ComputerViewSet(viewsets.ModelViewSet):
serializer_class = ComputerSerializer
def get_queryset (self, *args, **kwargs):
comp_id = self.kwargs['comp_id']
queryset = Computer.objects.filter(computer_id=comp_id)
return queryset
Serializers.py
class ComputerSerializer(serializers.ModelSerializer):
class Meta:
model = Computer
fields = ('id', 'computer_id', 'city', 'description')
Поэтому я попытался безуспешно переопределить другие методы в классе в Views.py
:
def destroy(self, request, *args, **kwargs):
computer = self.get_object()
self.perform_destroy(computer)
computer.delete()
def update(self, request, *args, **kwargs):
#...
Моя цель - иметь одну конечную точку с GET/PUT/DELETE
возможностями.Как я могу начать это?