GJ.*_*GJ. 49 django django-models django-admin
假设我有一个Book模型,其中包含Publisher模型的外键.
我如何在Django管理员中显示每个发布者发布的图书数量的列,我可以使用内置排序?
Lin*_*n B 78
我遇到了同样的问题(我无法更改模型的管理器以添加缓慢的注释或连接).这里有两个答案的组合.@Andre非常接近,Django Admin支持仅修改admin的查询集,因此在此处应用相同的逻辑,然后使用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'
Run Code Online (Sandbox Code Playgroud)
试试这个:
class PublisherManager(models.Manager):
def get_query_set(self):
return super(PublisherManager,self).get_query_set().annotate(pubcount=Count('book'))
Run Code Online (Sandbox Code Playgroud)
排序pubcount
:
class Publisher(models.Model):
......
objects = PublisherManager()
class Meta:
ordering = ('pubcount',)
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
11111 次 |
最近记录: |