我在一个查询上遇到了困难,该查询应该按模型属性分组,并为该模型属性的每个唯一值返回具有最近日期的行。
我不能设法得到输出,我正在寻找的方式,将消化我的模板。
下面是我试图查询的模型:
class Building(models.Model):
building_id = models.AutoField(primary_key=True)
created_at = models.DateTimeField(auto_now_add=True, blank=True)
project = models.CharField(max_length=200,blank=True, null=True)
这是我的第一个尝试:获取唯一的项目并使用for循环:
projects = list(Building.objects.all().values_list('project', flat=True).distinct())
context = {}
for project in projects:
proj = Building.objects.filter(project=project).latest("created_at")
context[project] = proj
这是确定的,但它不允许我访问模板=〉中的{% for i in projects %}
查询集,从而导致链接的pk问题
我的另一个尝试是获取行,将所有内容保存在查询集中:
projects = Building.objects.all().values_list('project', flat=True).distinct()
proj = Building.objects.filter(project__in=list(projects)).latest("created_at")
它只返回最近输入的行,而不考虑项目名称。这与我正在寻找的内容很接近,但不完全是因为我试图为每个唯一的项目值输出最近输入的行。
做那件事的正确方法是什么?
2条答案
按热度按时间gg0vcinb1#
您可以使用:
或者,如果您也需要该项目:
qmelpv7a2#
您只能使用不带任何参数的latest(),并将获得表中的最新条目
尝试