Python django-如何查询这个?
我有两张表,叫做位置和速率 费率表包含以下项目: von_location是location表的外键 我想要一个通缉率的位置。如果我用Python django-如何查询这个?,python,django,Python,Django,我有两张表,叫做位置和速率 费率表包含以下项目: von_location是location表的外键 我想要一个通缉率的位置。如果我用2搜索一个位置,我会得到id为5的位置。这很好。但是如果我也搜索一个带有浪漫的3的位置,我也会得到id为5的位置。但我想要这样的逻辑: 如果一个地点有两个费率,则获取最新的费率。在django我怎么做 我的模型是: class Location(models.Model): name = models.TextField() adres = models.Te
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
如果我理解正确,您需要向位置模型添加一个函数,如下所示:
def get_latest_rate(self):
return self.rate_set.latest('datum')
然后你可以这样做:
[l.get_latest_rate() for l in Location.objects.filter(**s_kwargs)]
我不知道您是在尝试筛选
位置
还是速率
。您的介绍意味着您希望根据速率
进行筛选(因为浪漫
属于该模型),但您的示例查询是根据位置
进行筛选的
如果要查找与一组查询参数关联的最新速率的位置
,请尝试以下操作:
location = Rate.objects.filter(romantic=something).latest('datum').von_location
你能展示模型吗?@alecxe,是的,请c我的更新和von_user_id不包括在你的模型中,尽管它们出现在数据库中。@Tadeck,当你阅读我的问题时,我删除了一些列,因为它们与我的问题无关。