Найти - Пользователи
Полная версия: Поиск в БД
Начало » Django » Поиск в БД
1
lEXA
Добрый день,
Изучаю Django - возникают вопросы)
Есть БД - скажем машины. Условный пример вот http://auto.ru/cars/chevrolet/aveo/used/
Делаю viewшки (проблем нет).
Но как выводить то что нужно пользователю (пользователь сам выбирает - скажем машины с 2001 по 2005 год, автомат, дизель).

Погуглил - примеров не нашел. В обучалках что смотрел-читал не видел такого.
lEXA
ajib6ept
попробывал зафильтровать по дате. На сайте происходит фильтрация по get-Запросу
Да интересует именно GET - что бы можно было прямую ссылку давать - вот авто с 2008 года
ajib6ept
Т.е. надо получить содержимое get-запроса в соответствии с этим отфильтровать модель.
Получаем список переменных из GET
Если есть год начала то не менее, если год до ..
составить QuerySet запрос пропарсив все переменные как то не хватает знаний(
lEXA
Тогда давайте спрошу более понятный вопрос
Три параметра скажем
year_before - год с какого ищем
year_last год до которого ищем
Все включительно
и automat - True or False

Передаем не все 3 всегда а выборочно. 1 параметр любой. 0 параметров. Все три.
Как составить QuerySet ? Ну кроме дикого if
GreyZmeem
Можно как-то так:
class SearchForm(forms.Form):
    formfield_to_dbfield = {
        'year_from': 'year__lte',
        'year_to': 'year__gte',
    }
 
    year_from = forms.DateField(required=False)
    year_to = forms.DateField(required=False)
    automat = forms.BooleanField(required=False)
 
    def get_dbfield(self, formfield):
        return self.formfield_to_dbfield.get(formfield, formfield)
 
    def search(self):
        search_dict = dict(
            (self.get_dbfield(formfield), value) 
            for formfield, value 
            in self.clean().iteritems() 
            if value is not None
        )
        return MyModel.objects.filter(**search_dict)
lEXA
GreyZmeem
Надо переспать с этим решением)
Спасибо!
Я наверное в самом начале.. пути)
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB