DRF GnericViewset не принимает данные JSON - PullRequest
0 голосов
/ 11 ноября 2018

Я использую Django 2.x и Django REST Framework.

У меня есть видовой набор, определенный как

class UserSettingViewSet(mixins.ListModelMixin,
                         mixins.RetrieveModelMixin,
                         mixins.UpdateModelMixin,
                         viewsets.GenericViewSet):

    serializer_class = UserSettingSerializer
    permission_classes = (IsAuthenticated, AdminAuthenticationPermission)

    def get_object(self):
        user_setting = UserSetting.objects.get(user=self.request.user)
        return user_setting

    def get_queryset(self):
        queryset = UserSetting.objects.filter(
            user=self.request.user
        )

        return queryset

    def update(self, request, *args, **kwargs):
        iso3 = request.POST.get('country', None)

        if iso3 is None or not iso3:
            raise ValidationError({'country': 'Country iso3 is required'})

        try:
            country = Country.objects.get(iso3=iso3.upper())
        except ObjectDoesNotExist:
            raise ValidationError({'country': 'Country does not exists'})

        user_setting = UserSetting.objects.get(user=request.user)

        user_setting.country = country
        user_setting.save()

        return super(UserSettingViewSet, self).update(request, *args, **kwargs)

Когда я звоню update из Angular, он не принимает данные формы и выдает ошибку

{'country': 'Country iso3 is required'}

При отправке данных как ** form-data от почтальона работает нормально. **

Заголовок углового запроса:

enter image description here

в то время как у Почтальона

enter image description here

Как настроить Django для приема данных JSON в PUT?

1 Ответ

0 голосов
/ 11 ноября 2018

Вам необходимо использовать request.data вместо request.POST в вашем методе обновления.

...