Почему запрос фильтра django не принимает переданные значения?
У меня есть программа, которая должна выполнить objects.filter
запрос на два столбца и на основе этого получить данные из 3-го столбца.
class API(GenericAPIView, ListModelMixin, CreateModelMixin):
serializer_class = [DummySerializer, ATSerializers]
def __init__(self,*args, **kwargs):
super().__init__(*args, **kwargs)
self.org = None
self.ent = None
def post(self, request, *args, **kwargs):
org = request.data.get("org")
ent = request.data.get("ent")
self.org = org
self.ent = ent
if self.org is None or self.ent is None:
return Response("Both fields are required to fetch token..", status=status.HTTP_400_BAD_REQUEST)
queryset = self.get_queryset()
print("[QUERY SET] :", queryset)
if not queryset:
return Response("No matching records found.", status=status.HTTP_404_NOT_FOUND)
lnk_token = list(queryset.values_list('link_token', flat=True))
return Response({"lnk_tkn": lnk_token}, status=status.HTTP_200_OK)
def get_queryset(self):
org = self.org
ent = self.ent
print("this is get_queryset bloc")
if org is None or ent is None:
return tbl.objects.none()
else:
print(self.org, self.ent)
filter_token = tbl.objects.filter(org=org, ent=ent)
print(filter_token)
lnk_token = filter_token.values_list('tkn', flat=True)
return lnk_token
def list(self, request, *args, **kwargs):
queryset = self.get_queryset()
if not queryset:
return Response(f"Both IDs are the required fields.....")
return Response(
{
"token": queryset
}
)
Я получаю значения
org
иent
из тела запроса в методе post и передаю их в методget_queryset()
GET.Затем значения должны быть переданы в
filter_token = tbl.objects.filter(org=org, ent=ent)
Именно в этот момент код дает сбой.
Через операторы печати для org и ent в различных местах как в методе post, так и в методе get_queryset() я вижу, что значение приходит, но оно не передается в filter_token. Я не уверен, почему. Я получаю следующую ошибку в методе post, где я вызвал get_queryset().
"Не найдено совпадающих записей." в моем postman. Ниже приведен
print(filter_token)
вывод.[QUERY SET] : В методе post есть POST-функции, которые я пока убрал. Потому что я хотел протестировать функциональность get_queryset(), прежде чем восстанавливать там POST-функции.
Цель создания такой структуры вызова функции заключается в том, чтобы при вызове метода POST в теле запроса POST API передавались только эти
.org
и ent значения. Следовательно, я хотел выполнить функцию get_queryset() непосредственно в POST для дальнейшей работы с данными