我正在尝试创建一个Django查询,以获取MySQL
数据库中每个不同值的最后一个条目的列表。我将在下面展示一个例子,因为这个解释可能非常复杂。使用.values()
显然在Django中自己获取不同的值是没有问题的。我想创建几个Django查询,但这看起来很麻烦。有没有一种简单的方法可以做到这一点。
以下示例。假设我希望具有不同名称的行与其最后一个条目(最新日期)。
Name email date
_________________________________________________
Dane dane@yahoo.com 2017-06-20
Kim kim@gmail.com 2017-06-10
Hong hong@gmail.com 2016-06-25
Dane dddd@gmail.com 2017-06-04
Susan Susan@gmail.com 2017-05-21
Dane kkkk@gmail.com 2017-02-01
Susan sss@gmail.com 2017-05-20
所有不同的价值观都是Dane,kim,Hong,Susan。我还希望具有与这些不同名称相关联的最新日期的行。我想要的条目列表是下面的行。注意名称都是不同的,它们与最新日期相关联。
Name email date
_________________________________________________
Dane dane@yahoo.com 2017-06-20
Kim kim@gmail.com 2017-06-10
Hong hong@gmail.com 2016-06-25
Susan Susan@gmail.com 2017-05-21
答案 0 :(得分:2)
使用django模型,无论你使用什么sql数据库,你都可以这样做:
EmailModel.objects.all().order_by('date').distinct('Name')
有关此类更多方法/功能,您可以访问the docs here
答案 1 :(得分:1)
这仅适用于POSTGRES
您可以使用ORDER_BY
命令按日期排序查询集,然后使用DISTINCT
命令链接以获取不同的行并指定哪个字段。 DISTINCT
命令将为每个名称输入第一个条目。请参阅The Docs For More
修改强>
对于MYSQL,您必须使用原始SQL查询,请参阅here
答案 2 :(得分:1)
只有Postgres
支持在distinct
中提供字段名称。此外,values
和order_by
中提供的任何字段都是不同的,因此有时会提供模棱两可的结果。
然而对于MySQL:
Model.objects.values('names').distinct().latest('date')