Обновление списка рамок отдыха django - PullRequest
0 голосов
/ 10 ноября 2018

Я пытаюсь добавить параметры обновления в элементы списка. Так что если кто-нибудь выполнит запрос «PATCH», я получу детали и обновлю их. Это мой код для реализации

class SwitchListView(UpdateModelMixin, ListAPIView):
  serializer_class = serializers.SwitchSerializer
  lookup_field = 'home_id'

  def get_queryset(self):
    home_id = self.kwargs.get('home_id', None)
    if home_id is None or int(home_id) < 0 or \
            self.request.user.pk != models.Home.objects.filter(pk=home_id)[0].user.pk:
        return models.Switch.objects.none()
    query = models.Switch.objects.filter(home=models.Home.objects.filter(pk=home_id))
    return query

  def get(self, request, *args, **kwargs):
    return super(SwitchListView, self).get(request, *args, **kwargs)

  def partial_update(self, request, *args, **kwargs):
    print("Came here")
    data = request.data['data']
    for i in data:
        query = self.get_queryset().filter(i['pk'])
        if query.exists():
            query.switch_status = i['switch_status']
            query.save()

    return Response({'message': 'successfully updated switch!'})

Но здесь запрос к API принимает только GET, HEAD и OPTIONS. Я даже пытался добавить http_method_names = ('get', 'patch'), но даже это не работает !!

Есть ли способ поместить запрос на исправление в представление?

Спасибо

1 Ответ

0 голосов
/ 10 ноября 2018
from rest_framework.decorators import detail_route

...

@detail_route(methods=['put', 'patch'])
def partial_update(self, request, *args, **kwargs):
    ...

попробуй?

...