Поиск модели по цене, если цена может быть указана в валюте?

Здравствуйте.
Имеется модель:

class Flat(models.Model):
    ...
    price = models.IntegerField('Цена в рублях/долларах/евро')
    price_currency = models.CharField('Валюта')
    pub_date = models.DateTimeField('Дата публикации')
    ...


На фронте есть форма поиска с минимальной и максимальной ценой в рублях. Будем считать, что курс валют у нас есть. Нужно написать запрос для выборки всех квартир, попадающих в диапазон цен, и отсортировать их по дате публикации. С Django начал работать недавно, подскажите как правильно это реализовать.
  • Вопрос задан
  • 388 просмотров
Решения вопроса 1
winordie
@winordie
Лучшая документация -- исходники
from django.db.models import Q
queryset = Flat.objects.filter(
Q(price_currency='RUB', price__lte=price_max, price__gte=price_min) | 
Q(price_currency='USD', price__lte=price_max*rate_usd, price__gte=price_min*rate_usd) | 
Q(price_currency='EUR', price__lte=price_max*rate_eur, price__gte=price_min*rate_eur)
)
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
suguby
@suguby
программист, python, django, mysql, git, hg, linux
queryset = Flat.objects.filter(price__lte=200, price__gte=100).order_by('pub_date')
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы