我有两个名为Location和Rate的表。
费率表包含以下项目:
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')
我仍然在两个查询中获得相同的位置。 2
和3
。
答案 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)
我对您是否尝试过滤Location
或Rate
感到困惑。您的介绍意味着您要对Rate
进行过滤(因为romantic
属于该模型),但您的示例查询是在Location
上过滤的。
如果您想查找与一组查询参数相关联的最新Location
的{{1}},请尝试以下操作:
Rate