В 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 для предотвращения ошибки.

Вернуться на верх