如何计算条目数,注释它并使用Django ORM选择最新

时间:2016-10-21 11:26:54

标签: django python-3.x django-orm

我需要选择符合特定模式的条目,计算它们并选择最新的条目。如何通过Django ORM做到这一点?

尝试:

Entry.objects.filter(A=B).annotate(Count("something")).latest("date")

每个B只计算1个项目。如果我删除latest("date"),它会正确计数,但只提供计数而不提供任何其他内容。如何正确执行此任务?

UPD:实际代码

def render_entries(request):
    ids = Entry.objects.values("entry_token").distinct()
    entries = [Entry.objects.filter(entry_token=x["entry_token"]).annotate(count=Count("id")).latest("date_time") for x in ids]
    return render(request, "entries_list.html", {'entries':entries})

1 个答案:

答案 0 :(得分:0)

已更新可能不是最佳选择,但这应该可行。

def render_entries(request):
    # get list of all entry_tokens with count
    tokens = Entry.objects.values('entry_token').annotate(count=Count('entry_token'))
    # create list of entries
    entries = []
    for token in tokens:
        entry = Entry.objects.filter(entry_token=token['entry_token']).latest('date_time')
        entry.count = token['count']
        entries.append(entry)
    return render(request, "entries_list.html", {'entries':entries})
相关问题