gue*_*tli 0 django django-admin
想象一下,你有一个Person
可以有 N 个Book
实例的模型。
我想在 django 管理更改列表视图中显示一个人拥有的书籍数量。
显示数字很容易(在 PersonAdmin 上编写自定义方法)。
但是我找不到一种方法可以根据一个人拥有的书籍数量对其进行排序。
我阅读了list_display的文档,但找不到答案。
根据文档,可以使用查询表达式。有没有可能以这种方式解决它?
应用答案后,这就是它的样子。在这种情况下,每个实例都有 N 个日志条目:
在和方法get_queryset()
的帮助下覆盖模型管理员的方法。然后,定义一个可调用函数(book_count())将值返回到更改列表页面annoate()
order_by()
from django.db.models.aggregates import Count
class PersonAdmin(admin.ModelAdmin):
list_display = ('book_count', 'other_field')
def get_queryset(self, request):
qs = super().get_queryset(request)
qs = qs.annotate(book_count=Count('book')).order_by('-book_count')
return qs
def book_count(self, person_instance):
return person_instance.book_count
Run Code Online (Sandbox Code Playgroud)
ordering
?当我们调用 时super()
,Django 会抛出异常
归档时间: |
|
查看次数: |
589 次 |
最近记录: |