I am trying to make a Django query for getting a list of the last entries for each distinct values from a MySQL
database. I will show an example below as this explanation can be very complicated. Getting the distinct values by themselves obviously in Django is no problem using .values()
. I was thinking to create couple of Django queries but that looks to be cumbersome. Is there an easy way of doing this.
For the example below. Suppose I want the rows with distinct Names with their last entry(latest date).
Name email date
_________________________________________________
Dane [email protected] 2017-06-20
Kim [email protected] 2017-06-10
Hong [email protected] 2016-06-25
Dane [email protected] 2017-06-04
Susan [email protected] 2017-05-21
Dane [email protected] 2017-02-01
Susan [email protected] 2017-05-20
All the distinct values are Dane, kim, Hong, Susan. I also want the rows with the latest dates associated with these distinct name. The list with entries I would like is the rows below. Notice Names are all distinct, and they are associated with the latest date.
Name email date
_________________________________________________
Dane [email protected] 2017-06-20
Kim [email protected] 2017-06-10
Hong [email protected] 2016-06-25
Susan [email protected] 2017-05-21
with postgresql you should able to do:
EmailModel.objects.all().order_by('date').distinct('Name')
for more methods/functions like this, you can visit the docs here
This only applies to POSTGRES
You can use the ORDER_BY
command to set your query set as ordered by date, then chain with the DISTINCT
command to get distinct rows and specify which field. The DISTINCT
command will take the first entry for each name. Refer The Docs For More
Edit
For MYSQL, you will have to use raw SQL queries, refer here
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With