Получение «AttributeError: объект QuerySet» не имеет атрибута «_meta» в django rest метод «PUT» - PullRequest
0 голосов
/ 30 мая 2018

Я пытаюсь обновить запись методом PUT, получая AttributeError: у объекта 'QuerySet' нет атрибута '_meta'.Мои модели.«Я получаю результат.Пожалуйста, помогите мне с методом "PUT".

1 Ответ

0 голосов
/ 30 мая 2018

Эта ошибка возникает с PUT, потому что сериализатор пытается получить доступ к мета-классу на экземпляре модели, который он обновляет, но завершается неудачно, потому что вы не передаете экземпляр модели - вы передаете набор запросов, как указано в комментариях.

Таким образом, вам нужно передать экземпляр и указать, какой экземпляр вы обычно будете передавать идентификатору экземпляра через URL.Для этого вам лучше всего выделить ваши представления и создать представление table_detail для извлечения и обновления конкретного экземпляра.

@api_view(['GET','PUT'])
def table_detail(request, pk):
    try:
        table_info = TableInfo.objects.get(pk=pk)  # Lookup a specific object
    except TableInfo.DoesNotExist:
        return Response(status=status.HTTP_404_NOT_FOUND)

    if request.method == 'GET':
        serializer_class = TableInfoSerializer(table_info)
        return Response(serializer_class.data)

    elif request.method == 'PUT':
        serializer = TableInfoSerializer(table_info, data=request.data)
        if serializer.is_valid():
            serializer.save()
            return Response(serializer.data)
        return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)

Ваше представление table_info может затем просто обрабатывать операцию списка.

@api_view(['GET'])
def table_info(request):
    if request.method == 'GET':
        queryset = TableInfo.objects.all()
        serializer_class = TableInfoSerializer(queryset, many=True)
        return Response(serializer_class.data)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...