django - 如何查询?

时间:2013-08-11 10:41:06

标签: python django

我有两个名为Location和Rate的表。

费率表包含以下项目:enter image description here

von_location是Foreignkey to Location表。

我想获得一个通缉率的位置。如果我搜索带有浪漫2的位置,我将获得ID为5的位置。这可以。但如果我还搜索了一个浪漫3的位置,我也会获得ID为5的位置。但我想要这个逻辑:

如果一个地点有两个费率,请获取最新的费率。我怎么能在django做到这一点?

我的模特是:

class Location(models.Model):
 name = models.TextField()
 adres = models.TextField()

class Rate(models.Model):
 von_location = models.ForeignKey(Location,related_name='locations_bewertung')
 bewertung = models.IntegerField(max_length=2)
 romantic = models.IntegerField(max_length=2)
 priceleistung = models.IntegerField(max_length=2)
 datum = DateTimeField(auto_add_now=True)

我删除了一些与我的问题无关的专栏

我试过这个:

locations = Location.objects.filter(**s_kwargs).order_by('locations_bewertung').distinct('locations_bewertung')

我仍然在两个查询中获得相同的位置。 23

2 个答案:

答案 0 :(得分:1)

如果我理解正确,你想要的是为Location模型添加一个函数,如下所示:

def get_latest_rate(self):
    return self.rate_set.latest('datum')

然后你可以这样做:

[l.get_latest_rate() for l in Location.objects.filter(**s_kwargs)]

答案 1 :(得分:1)

我对您是否尝试过滤LocationRate感到困惑。您的介绍意味着您要对Rate进行过滤(因为romantic属于该模型),但您的示例查询是在Location上过滤的。

如果您想查找与一组查询参数相关联的最新Location的{​​{1}},请尝试以下操作:

Rate