Замена аргумента ключевого слова на переменную в фильтрации моделей Django

Я выполняю фильтрацию в модели django на основе данных, предоставленных пользователем в форме ввода. Я не хочу жестко кодировать значения, поэтому мне бы хотелось просмотреть все параметры запроса в цикле request.POST и затем отфильтровать по ключу и значению

Вот пример из моего кода

class QueryView(View):
    def post(self, request, *args, **kwargs):
        params = request.POST
        if params:
            for key in params:
                queryset = MyModel.objects.filter(key=params[key])
        return MyResponse

Я не могу заставить все работать, поскольку key должно быть полем в MyModel, есть ли лучший способ достижения той же цели.

Вы можете передать их в виде словаря:

queryset = MyModel.objects.filter(**{field_name: v1, another_field_name: v2})

вы можете получить доступ к полям и значениям POST как request.POST.items() он вернет пару ключ-значение, так что вы можете сделать что-то вроде этого

class QueryView(View):
    def post(self, request, *args, **kwargs):
        params = request.POST
        if params:
            for key, value in params.items():
                # key is the field and value is it's value
                # now you can filter as you wish
                queryset = MyModel.objects.filter(key=value)
        return MyResponse
Вернуться на верх