Django Admin,显示来自相关模型的聚合值 [英] Django Admin, Show Aggregate Values From Related Model
问题描述
是否可以在单个 Django 管理模型中聚合相关对象的字段.
Is it possible, within a single Django admin model, to aggregate fields from related objects.
例如,我有一个学生对象,它对测试对象有一个 FK.测试对象有一个分数"字段.
For example, I have a Student Object that has a FK to a Test Object. The test object has a "score" field.
我可以汇总所有学生考试的分数并将其放在管理 display_list 属性中吗?
Can I aggregate the scores across all Student's Tests and place it in the admin display_list attribute?
推荐答案
你可以,例如:
class FixtureAdmin(admin.ModelAdmin):
list_display = ["id", "title", "date", "num_fixture_metas_count"]
def get_queryset(self, request):
qs = super(FixtureAdmin, self).get_queryset(request)
return qs.annotate(num_fixture_metas=Count('fixturemeta'))
def num_fixture_metas_count(self, obj):
return obj.num_fixture_metas
num_fixture_metas_count.short_description = 'Fixture Count'
num_fixture_metas_count.admin_order_field = 'num_fixture_metas'
但是,AFAIK,您不能通过此方法在这些字段的管理员中单击排序,因为将 .annotate()
中的 num_fixture_metas
添加到 >list_display
导致缺少字段错误.
However, AFAIK, you cannot click sort within the admin on these fields via this method, as adding num_fixture_metas
from .annotate()
to the list_display
results in a missing field error.
https://docs.djangoproject.com/en/dev/ref/contrib/admin/#django.contrib.admin.ModelAdmin.list_displayhttps://docs.djangoproject.com/en/dev/topics/db/聚合/
这篇关于Django Admin,显示来自相关模型的聚合值的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!