django - 如果没有,请获取最新的一个,如果没有,请接受它

时间:2013-05-09 20:14:36

标签: python django lookup

我正在努力实现这一目标:

我有2个表:LocationRateLocation可以有多种费率。现在我想要的是,查看数据库并在没有重复foreignkey的情况下获取费率,但如果重复,则采用最新费率。

说,我搜索速率3,我的查找进入数据库并看到一个位置只有速率3,它需要它。但另一个位置有两个不同的速率,3和5.然后评估最后一个,5,并且自3!=5

以来不接受它
locations = Location.objects.filter(???)???? <----- help

如何在查询中写这个?

1 个答案:

答案 0 :(得分:1)

您可以使用原始查询 假设您的模型是:

class Location(models.Model):
    name = models.CharField(max_length=20)

class Rate(models.Model):
    value = models.IntegerField()
    location = models.ForeignKey('Location')

然后使用这个原始查询(希望我没有与SQL混淆,但你可以自己玩更多)

query = '''
select L1.* from core_rate as R1,core_location as L1 where L1.id = R1.location_id and value=%s and not exists (select * from core_rate as R2 where R2.location_id = R1.location_id and R2.id > R1.id)
'''
value = 3 # or anything you want
Location.raw(query,value)
相关问题