DonorInformationDetailAPI" должен либо включать атрибут `queryset`, либо переопределять `get_queryset()`.

Я из этого кода получаю ошибку набора запросов (из-за закомментированного метода набора запросов). Ранее я получал результат, когда определял набор запросов вне GET, но это действие было неправильным... . Теперь я хочу определить набор запросов

queryset =DonorContactInfo.objects.filter(email__iexact=email)

Откуда и куда угодно, только не в методе GET... что мне делать?

class DonorInformationDetailAPI(ListAPIView):
    """
A sample endpoint to list all donors in the system.

* Requires token authentication.
* Only admin users are able to access this view.
"""

serializer_class = DonorContactInfoSerializer
# queryset = DonorContactInfo.objects.all()
permission_classes = [IsAuthenticatedOrReadOnly]  # TODO change
pagination_class = AdminPanelsPagination

def get(self, request, *args, **kwargs):
    """return the list of the donor detail with that specific email"""
    email = kwargs["email"]
    queryset = DonorContactInfo.objects.filter(email__iexact=email)
   
    serializer = self.get_serializer(queryset, many=True)
    return Response(serializer.data, status=status.HTTP_200_OK)
# def get_queryset(self):
#     return ??

вот мой URL

path(
    "donors/donor_information/<str:email>/",
    DonorInformationDetailAPI.as_view(),
    name="donors_information",
),

это ошибка 'DonorInformationDetailAPI' должен либо включать атрибут queryset, либо переопределить метод get_queryset().

Montio вы можете использовать APIView вместо ListApiView и определить свою логику внутри метода get.

from rest_framework.views import APIView

class DonorInformationDetailAPI(APIView):
permission_classes = [IsAuthenticatedOrReadOnly]  # TODO change
pagination_class = AdminPanelsPagination

def get(self, request, *args, **kwargs):
    email = kwargs["email"]
    obj=DonorContactInfo.objects.filter(email__iexact=email)
    serializer=DonorContactInfoSerializer(obj)
    return Response(serializer.data, status=status.HTTP_200_OK)
Вернуться на верх