Пользовательский поиск в Django (параметр фильтра отличается от типа поля)
У меня есть простая модель в Django.
class Books(models.Model):
title = models.CharField(max_length=255)
page_size = models.IntegerField(null=True)
Пример экземпляра этой модели может выглядеть следующим образом: ("Alice's Adventures in Wonderland", 70).
Я хочу создать поиск, который позволит пользователям фильтровать книги по размеру страниц в следующей форме
- if the user types (inside the filter box)
>nDjango filter would return only books which have more pages thann, - if the user types
<nDjango filter would return only books with less pages thann.
Подводя итог, мне бы понадобился поиск __cmp, который был бы способен присоединиться к набору запросов перед его выполнением.
Так что я хотел бы, чтобы блок if-else был реализован где-то внутри.
filter_param, value = filter_param, filter_value = list(user_filter)
if filter_param == ">":
qr = Books.objects.filter(page_size__gt=n)
else:
qr = Books.objects.filter(page_size__lt=n)
Можно ли создать пользовательский поиск, реализующий такую логику?