我是新来的,使用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