Django получение значений из формы

Мне нужно фильтровать таблицу по столбцу и значению, ничего лучшего мне в голову не приходит (я новичок в django)

view

   def get_queryset(self):
        column = self.request.GET.get('column')
        condition = self.request.GET.get('condition')
        queryset = Table.objects.all()

        if condition == 'contains' and column == 'title':
            queryset = Table.objects.filter(
                title__icontains=self.request.GET.get('title')
            )

        elif condition == 'greater' and column == 'quantity':
            queryset = Table.objects.filter(quantity__gt=self.request.GET.get('title'))
        elif condition == 'greater' and column == 'distance':
            queryset = Table.objects.filter(distance__gt=self.request.GET.get('title'))
        elif condition == 'lower' and column == 'quantity':
            queryset = Table.objects.filter(quantity__lt=self.request.GET.get('title'))
        elif condition == 'lower' and column == 'distance':
            queryset = Table.objects.filter(distance__lt=self.request.GET.get('title'))
        elif condition == 'equals' and column == 'quantity':
            queryset = Table.objects.filter(quantity__exact=self.request.GET.get('title'))
        elif condition == 'equals' and column == 'distance':
            queryset = Table.objects.filter(distance__exact=self.request.GET.get('title'))

        return queryset

я знал, что это выглядит как **** пожалуйста, дайте мне более элегантную идею)

Там мой столenter image description here

идея заключается в следующем, пользователь выбирает столбец и условие, по которому будет фильтроваться таблица спасибо

Вы можете попробовать это

    column = request.GET.get('column')
    condition = request.GET.get('condition')
    condition_dict = {'contains':'icontains','greater':'gt','lower':'lt','equals':'exact'}
    title = request.GET.get('title')
    kwargs = {
        '{0}__{1}'.format(column, condition_dict[condition]): title,
    }
    queryset = Table.objects.filter(**kwargs)
    return queryset
Вернуться на верх