5

我有两个相关的表QuizDifficulty_level

inline在 admin.py 中创建了这样的:

class DifficultyLevelInline(admin.TabularInline):
    model = DifficultyLevel

并包含在QuizAdmin

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

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

如何添加inlineslist_display 顺序。我想显示 The DifficultyLevelInlinebefore category

4

3 回答 3

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"
于 2013-09-11T07:37:21.323 回答
4

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

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

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

于 2014-01-04T19:26:35.120 回答
0
  • 假设这是您的内联模型:
# models.py
from django.contrib.auth.models import Group


class MoreGroup(models.Model):
    group = models.OneToOneField(Group, on_delete=models.CASCADE, related_name='more_group')
    explain = models.CharField(verbose_name="explain_info", max_length=64, blank=True, null=True)
    active = models.BooleanField(verbose_name="is_actived", default=True, blank=True, null=True)

  • 然后这样做:
# admin.py
from . import models


class MoreGroupInline(admin.StackedInline):
    model = models.MoreGroup
    can_delete = False
    verbose_name_plural = 'more_info'


class MyGroupAdmin(GroupAdmin):
    list_display = ['id', 'name', 'get_inline_info']
    def get_inline_info(self, obj) -> str:
        mg = models.MoreGroup.objects.filter(group=obj)
        if mg.count():
            return mg[0].explain
        else:
            return '-'
    get_inline_info.short_description = 'explain_info'

admin.site.register(models.Group, MyGroupAdmin)
于 2021-11-26T09:55:11.077 回答