Я пытаюсь сделать запрос в jQuery списке Datatables.
Сейчас я могу получить все записи из таблицы, но я хочу получить записи, которым соответствует родительский идентификатор.
Например, у пользователей есть посты, поэтому в моем случае это будут выборки постов, где идентификатор пользователя, скажем, 1.
Поэтому я пытаюсь реализовать то же самое для jQuery Datatables.
Я вижу, что данные публикуются, но не могу понять, как сделать запрос вместе с datatables
, чтобы на это изменение не повлияли фильтры datatables
.
Мой текущий код:
class PartRequestViewSet(CommonViewset, generics.RetrieveAPIView):
queryset = PartRequest.objects.filter(deleted_at=None)
serializer_class = PartRequestSerializer
def list(self, request, *args, **kwargs):
records = request.GET.get('records', None)
# ID of the part
part_number_id = request.GET.get('part_number_id', None)
queryset = self.get_queryset()
queryset = self.filter_queryset(queryset)
page = self.paginate_queryset(queryset)
if page is not None and records is None:
serializer = self.get_serializer(page, many=True)
return self.get_paginated_response(serializer.data)
serializer = self.get_serializer(queryset, many=True)
return Response(serializer.data)
Теперь в приведенном выше коде я могу получить part_number_id
из запроса, но как я могу отфильтровать записи, используя filter_queryset()
, так что даются только parts_requests обратно в таблицы данных, где part_number_id
равно 1
Обновление
Текущая вспомогательная функция filter_queryset
, которая используется в приведенном выше коде.
def filter_queryset(self, queryset):
format = self.request.GET.get('format', None)
if format == 'datatables':
self.filter_backends += (DatatablesFilterBackend,)
else:
self.filter_backends += (DjangoFilterBackend,)
for backend in list(self.filter_backends):
queryset = backend().filter_queryset(self.request, queryset, self)
return queryset