如何计算条目数,注释它和 select 最新的 Django ORM
How to count number of entries, annotate it and select latest with Django ORM
我需要 select 匹配特定模式的条目,计算它们并选择最新的。如何通过 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})
已更新可能不是最理想的,但这应该有效。
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})
我需要 select 匹配特定模式的条目,计算它们并选择最新的。如何通过 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})
已更新可能不是最理想的,但这应该有效。
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})