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
я знал, что это выглядит как **** пожалуйста, дайте мне более элегантную идею)
идея заключается в следующем, пользователь выбирает столбец и условие, по которому будет фильтроваться таблица спасибо
Вы можете попробовать это
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