如何在list_display属性中定位Django Admin中的内联?

时间:2013-09-11 07:16:48

标签: django django-admin

我有两个与QuizDifficulty_level相关的表:

我在admin.py中创建了inline,如下所示:

class DifficultyLevelInline(admin.TabularInline):
    model = DifficultyLevel

并包含在QuizAdmin

要安排列表顺序,我会这样做:

  list_display = ('name', 'description', 'publication_date', 'category', 'is_active', 'is_premium')

如何在list_display顺序中添加inlines。我想在DifficultyLevelInline之前显示category

2 个答案:

答案 0 :(得分:4)

不幸的是,使用默认模板无法做到这一点。

如果你看一下change_form模板:

https://github.com/django/django/blob/master/django/contrib/admin/templates/admin/change_form.html

您可以看到内联总是在字段集之后呈现。

解决这个问题的一种方法是使用其他模板:

class MyAdmin(admin.ModelAdmin):
    list_display = ('name', 'description', 'publication_date', 'category', 'is_active', 'is_premium')
    inlines = (DifficultyLevelInline,)
    change_form_template = "my_change_form.html"

答案 1 :(得分:4)

Grapelli支持它:https://django-grappelli.readthedocs.org/en/latest/customization.html#rearrange-inlines

基本上,它通过字段集使用占位符,然后通过JavaScript移动它们: https://github.com/sehmaschine/django-grappelli/blob/master/grappelli/templates/admin/change_form.html#L90-96(搜索占位符,如果行不再匹配)。

同样可以通过自己注入自定义javascript(使用或不使用fieldsets作为占位符)来完成。