我有以下 django 管理员除外:
class TagAdmin(admin.ModelAdmin):
prepopulated_fields = {"slug": ("title",)}
list_display = ['title', 'total_videos', 'total_active_videos', 'weight', 'status']
search_fields = ['title']
list_filter = ['status']
ordering = ['-weight']
def queryset(self, request):
return Tag.objects.annotate(total_videos_order=Count('video'))
def total_videos(self, obj):
return obj.total_videos_order
total_videos.admin_order_field = 'total_videos_order'
def total_active_videos(self, obj):
return u'%s' % Video.objects.filter(tags=obj, status=Video.STATUS_ACTIVE).count()
现在这一切正常,total_videos 和 total_active_videos 都显示了正确的信息。如果单击表头,total_videos 也是可排序的。但是,如果我尝试将代码更改为:
ordering = ['total_videos_order']
我收到一个错误:
TagAdmin.ordering[0]' 指的是模型“videos.Tag”中缺少的字段“total_videos_order”。
如果它只是“total_videos”也一样。作为一种解决方法,我可以忽略它,只需单击标题,但它困扰我为什么,如果它通过单击默认顺序无法设置,当字段明显存在时?有什么想法吗?
问题的第二部分是是否可以在过滤字段“total_active_videos”上添加排序。据我了解,不可能用条件进行注释,因此不能像对“total_videos”那样做,但还有其他解决方案吗?
谢谢!