Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/339.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python django-如何查询这个?_Python_Django - Fatal编程技术网

Python django-如何查询这个?

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

我有两张表,叫做位置和速率

费率表包含以下项目:

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

如果我理解正确,您需要向位置模型添加一个函数,如下所示:

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,当你阅读我的问题时,我删除了一些列,因为它们与我的问题无关。