0

我有两张表,分别称为 Location 和 Rate。

费率表有以下项目:在此处输入图像描述

von_location 是 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.

4

2 回答 2

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)]
于 2013-08-11T11:12:02.627 回答
1

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

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

location = Rate.objects.filter(romantic=something).latest('datum').von_location
于 2013-08-11T11:20:45.300 回答