【发布时间】:2021-06-03 18:28:25
【问题描述】:
我希望返回一个查询集,该查询集由字段 name 的每个选择的最新(日期)对象组成。我可以通过迭代一个有序的查询集,然后使用 exclude() 逐步删除旧对象来做到这一点。我想知道这是否可以使用 latest() 来完成。我不知道如何使用 name 的每个唯一值运行最新的。
我对 django 没有太多经验,我担心下面的工作代码会很慢/很贵。它按名称对狗进行分组,然后按日期排序,然后系统地删除较旧的日期。
class Dog(models.Model):
# names = husky, poodle, lab, etc
name = models.CharField(max_length=20)
age = models.IntegerField()
datemade = models.DateField(default=date.today)
views.py
ad = Dog.objects.all().order_by('name', 'datemade')
n=0
while n < (len(ad)-1):
if ad[n].name==ad[n+1].name and ad[n].datemade<=ad[n+1].datemade:
ad = ad.exclude(id=ad[n].id)
print(ad)
n=n-1
n=n+1
【问题讨论】:
标签: django