在我的应用程序中,我必须添加一个对管理列表页面进行排序的链接。必须根据list_display中没有的字段进行排序。
我的模特是
class Page(models.Model):
title = models.CharField(max_length=40)
published_on = models.DateTimeField('Date Published')
created_on = models.DateTimeField('Date Created')
我的管理文件是
class PageAdmin(PageModelAdmin):
list_display = ('title', 'published_on')
core.site.register(Page, PageAdmin)
我只需要在管理列表页面中添加“最近添加”链接,以根据created_on对列表进行排序,该列表未添加到list_display。请提出任何建议
答案 0 :(得分:0)
猜测你的意思;
如果你想要的是为created_on
添加过滤器而不将其添加到list_display
,则只需将其添加为list_filter
class PageAdmin(PageModelAdmin):
list_display = ('title', 'published_on')
list_filter = ('created_on',) # The comma is important here
admin.site.register(Page, PageAdmin)
答案 1 :(得分:0)
有几个选择。如果您总是希望对页面进行排序,则可以将ordering
添加到模型中,这将为所有查询排序
class Page(...):
field = ...
class Meta:
ordering = ['published_on']
有关详情,请参阅the docs
您还可以覆盖特定modelAdmin的查询集:
class PageAdmin(...):
list_display = ...
def queryset(self, request):
qs = super(PageAdmin, self).queryset(request)
return qs.order_by('published_on')
有一种感觉,只有在没有设定订购但现在不记得的情况下这才有效。关于此的信息也在the docs,(抱歉,没有直接链接到方法)