假设我有一个包含 Publisher 模型外键的 Book 模型。
如何在 Django 管理中显示一个包含每个出版商出版的书籍数量的列,以一种我可以使用内置排序的方式?
最佳答案
我遇到了同样的问题(我无法更改模型的管理器来添加慢速注释或连接)。这里两个答案的组合有效。 @Andre 非常接近,Django 管理员支持仅为管理员修改查询集,因此在此处应用相同的逻辑,然后使用 admin_order_field 属性。当然,您仍然需要将新的管理字段添加到 list_display。
from django.db.models import Count
class EventAdmin(admin.ModelAdmin)
list_display = (..., 'show_artist_count')
def queryset(self, request):
# def get_queryset(self, request): for Django 1.6+
qs = super(EventAdmin, self).queryset(request)
return qs.annotate(artist_count=Count('artists'))
def show_artist_count(self, inst):
return inst.artist_count
show_artist_count.admin_order_field = 'artist_count'
关于django - 如何将可排序的计数列添加到具有多对一关系的模型的 Django 管理中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3491766/