我需要选择符合特定模式的条目,计算它们并选择最新的条目。如何通过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})
答案 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})