我是新來的,使用Web Apps & SEO。 StackOverflow一直是學習我的Python方法的好資源& Django非常感謝社區。現在我的問題!比較Django中沒有F對象的兩個字段
我有一對夫婦的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 maxes時,預訂就會用盡。即達到其層級的enquiry_limit。
我發現有F對象這樣做的一個直接的方法和排除哪些工作得很好我的開發機器上:
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
提前感謝!
最好不要跳過版本。 1.0到1.3是迄今爲止,有些在1.0中工作的東西在1.3中不起作用,因爲它們已被刪除(在1.1中預先棄用,在1.2中棄用,在1.3中刪除)。我認爲將消息存儲在帶有外鍵的模型中是auth.user中的一個,現在消息都是基於會話的。我也認爲你需要在1.3中使用csrf-token。這是在1.2 IIRC中添加的,並且我認爲在1.4中是強制性的。 – kaleissin 2011-03-30 11:57:47