В Django набор запросов с использованием фильтра с пользовательскими аргументами
Я использую фильтр в Django queryset, поскольку он принимает аргументы типа:
Model.objects.filter(name="Amit")
вот имя и его значение, которые я получаю из запроса API:
def get(self, request):
column = request.query_params.get('column')
val = request.query_params.get('value')
query = Data.objects.filter(column=val).values()
serializer = DataSerializer(query, many=True).data
return Response(serializer)
но здесь колонка [внутри фильтра] не распознается как параметр запроса, она воспринимается как имя колонки таблицы, которая недоступна.
Ошибка, которую я получил:
django.core.exceptions.FieldError: Cannot resolve keyword 'column' into field.
Надеюсь, эта информация подходит для понимания проблемы, если что-то упущено, пожалуйста, сообщите мне и любезно помогите мне с этим.
Вы можете попробовать следующее: django-query-filter-with-variable-column
Итак, если collum является переменной, содержащей поле, которое вы хотите отфильтровать, то это должно выглядеть следующим образом:
def get(self, request):
column = request.query_params.get('column')
val = request.query_params.get('value')
query = Data.objects.filter(**{column:val}).values()
serializer = DataSerializer(query, many=True).data
return Response(serializer)
и вы должны проверить, если column или val не None для предотвращения ошибки.