Django Admin,从相关模型中显示聚合值 [英] Django Admin, Show Aggregate Values From Related Model

查看:295
本文介绍了Django Admin,从相关模型中显示聚合值的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

在单个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 queryset(self, request):
        qs = super(FixtureAdmin, self).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/1.3/ref/contrib/admin/#django.contrib.admin.ModelAdmin.list_display
https://docs.djangoproject.com/en/ dev / topics / db / aggregation /

这篇关于Django Admin,从相关模型中显示聚合值的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆