Я новичок здесь, работаю с веб-приложениями и SEO. StackOverflow стал отличным ресурсом для изучения моего опыта работы с Python и Django, поэтому большое спасибо сообществу. Теперь на мой вопрос!
У меня есть пара моделей Django:
class Subscription(models.Model):
hotel = models.ForeignKey("Hotel", related_name="subscriptions")
tier = models.ForeignKey("Tier")
enquiry_count = models.PositiveIntegerField(default=0)
start_date = models.DateField(null=True, blank=True)
end_date = models.DateField(null=True, blank=True)
и
class Tier(models.Model):
name = models.CharField(max_length=32)
enquiry_limit = models.PositiveIntegerField(default=0)
У меня также есть модель отеля, которую я покажу здесь в очень упрощенной форме:
class Hotel(models.Model):
name = models.CharField("Hotel Name", max_length=128)
address = models.TextField("Address", blank=True)
town = models.CharField(max_length=64)
star = models.PositiveIntegerField(default=0, null=True, blank=True)
Каждый отель должен иметь подписку, чтобы появиться в моих результатах поиска. Каждая подписка имеет уровень с определенным пределом enquiry_limit.
Подписка заканчивается, когда она либо достигает end_date, либо ее максимальное значение enquiry_count заканчивается. то есть достигает предела enquiry_limit своего уровня.
Я нашел простой способ сделать это с F Objects и исключение, которое хорошо работает на моей машине разработчика:
self.premium_hotels = Hotel.objects.select_related().exclude(
Q(subscriptions__end_date__lte=datetime.date.today()) | Q(subscriptions__enquiry_count__gte=F('subscriptions__tier__enquiry_limit')))
Это не будет работать в реальной версии сайта, так как он работает под управлением Django 1.0. Любые советы о том, как выполнить этот запрос без объектов F?
Я понимаю, что очевидным решением является обновление, но нам нужно это сразу же развернуть, и мне потребуется время для подготовки и тестирования, прежде чем мы перейдем на Django 1.3
Заранее спасибо!