DRF UpdateAPI View возвращает «detail»: «Not found». - PullRequest
0 голосов
/ 04 марта 2019

Когда я выполняю PUT или PATCH для моей конечной точки DRF, я получаю ответ 404 "detail": "Not found.".Я не уверен, что вызывает ошибку, мой взгляд или сериализатор.

Документация по DRF немного отсутствует, и для меня нет рабочего примера UpdateAPIView.

Код:

urls.py

path('api/update/job/<int:pk>/', views.UpdateJobView.as_view() ),

serializers.py

class JobsUpdateSerializer(serializers.ModelSerializer):
    designer_one = serializers.PrimaryKeyRelatedField(many=False, queryset=UserProfile.objects.all())
    designer_two = serializers.PrimaryKeyRelatedField(many=False, queryset=UserProfile.objects.all())
    class Meta:
        model = Job
        fields = '__all__'

views.py

class UpdateJobView(generics.UpdateAPIView):
    serializer_class = JobsUpdateSerializer
    lookup_field = "pk"

    def get_queryset(self):
        queryset = Job.objects.all()
        jobID = self.request.query_params.get('pk', None)
        if jobID is not None:
            queryset = queryset.filter(id=jobID)
        else:
            return False

Нужно ли изменить представление, чтобы оно содержало функцию get_object?

Django==2.1.3 djangorestframework==3.9.0

1 Ответ

0 голосов
/ 04 марта 2019

self.request.query_params.get('pk', None) - для получения параметров запроса, а не URL.Примеры на странице фильтрации документации доступны для параметров запроса и для URL .

Вам не нужно переопределять get_queryset или get_object в вашем случае,Удалите ваш lookup_field, так как он уже по умолчанию pk и ваш пользовательский get_queryset.Вместо этого определите queryset и оставьте оставшуюся работу по умолчанию UpdateView:

class UpdateJobView(generics.UpdateAPIView):
    serializer_class = JobsUpdateSerializer
    queryset = Job.objects.all()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...