Python django-如果重复,则获取最新的,如果不重复,则获取

Python django-如果重复,则获取最新的,如果不重复,则获取,python,django,lookup,Python,Django,Lookup,我正努力做到这一点: 我有两个表:Location和Rate位置可以有多个费率。现在,我想要的是,在数据库中查找,如果没有重复的foreignkey,则取最新的速率,如果重复,则取最新的速率 比如说,我搜索速率3,我的查找进入db,发现一个位置只有速率3,它接受它。但另一个位置有两种不同的费率,3和5。然后评估最后一个,即5,不要接受它,因为3=5 locations = Location.objects.filter(???)???? <----- help locations=Loc

我正努力做到这一点:

我有两个表:
Location
Rate
<代码>位置可以有多个费率。现在,我想要的是,在数据库中查找,如果没有重复的
foreignkey
,则取最新的速率,如果重复,则取最新的速率

比如说,我搜索速率3,我的查找进入db,发现一个位置只有速率3,它接受它。但另一个位置有两种不同的费率,3和5。然后评估最后一个,即5,不要接受它,因为
3=5

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

locations=Location.objects.filter(???) 您可以为此使用原始查询
假设您的模型是:

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

class Rate(models.Model):
    value = models.IntegerField()
    location = models.ForeignKey('Location')
然后使用这个原始查询(希望我没有混淆SQL,但您可以自己玩更多)


您是否有任何字段来确定哪一个是最新的?也许ID是“自动数值增量”
,但我不相信这一点。除非在模型字段中没有保存上次修改日期时间的“修改的”,否则无法定义哪一个是最后一个。@BartoszDabrowski,我有“速率”中的“时间戳”字段。如何在服用前进行if比较?@PauloBu,我在速率模型中有时间戳字段
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)