Использование кода ответа или сообщения с методом get_queryset в django restframework или обычном ответе - PullRequest
0 голосов
/ 28 января 2020

В настоящее время я использую django rest framework. В случае фильтрации я использовал дополнительный класс ValidationErrorere, чтобы получить дополнительный ответ. Вот мой класс ProductList для фильтрации данных.

class ProductList(ListAPIView):

    serializer_class = ProductSerializer

    def get_queryset(self):

        queryset = Product.objects.all()
        status = self.request.query_params.get('status', None)
        type   = self.request.query_params.get('type', None)
        if status is not None:
            queryset = queryset.filter(status=status)
        if type is not None:
            queryset = queryset.filter(type=type)

        if not queryset:
            raise ValidationError
        return queryset


class ValidationError(APIException):
    status_code = status.HTTP_404_NOT_FOUND
    default_detail = ({ 'response_code': '404', 'response': status.HTTP_404_NOT_FOUND
, 'message': 'No data is available', })

Здесь я использовал собственный класс ValidationError, чтобы вернуть какое-то дополнительное значение. Если нет данных, что означает, что набор запросов не возвращает никаких данных, он показывает эти выходные данные.

{
    "response_code": "404",
    "response": "404",
    "message": "No data is available"
}

Теперь он возвращает этот результат. Когда набор запросов не пуст. выделенный текст [{"id": 6, "SKU": 11, "name": "Item_11", "type": "paper",},

]

Но Я хочу показать результат с кодом ответа. как это .....

    [
        {
            "response_code": "200",
            "response": "200",
            "message": "Ok"
        }

        {
            "id": 6,
            "SKU": 11,
            "name": "Item_11",
            "type": "paper",

        },
 ]
...