0

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

我有 2 张桌子:LocationRate. Location可以有多个费率。现在我想要的是,在数据库中查找,如果没有重复则取汇率foreignkey,但如果重复,则取最新汇率。

说,我搜索速率 3,我的查找进入 db 并看到一个位置只有速率 3,它需要它。但是另一个位置有两种不同的费率,3 和 5。然后评估最后一个,5 并且不要拿它,因为3!=5

locations = Location.objects.filter(???)???? <----- help

我怎样才能在查询中写这个?

4

1 回答 1

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)
于 2013-05-09T21:16:58.210 回答