2

我有一个带有 TabularInline 类型内联的 ModelAdmin 类。我想要的是 TabularInline 的每一行在其左侧显示一个行号。这个数字会随着新记录添加到内联中而增加,并且会在编辑表单时显示。

我更喜欢行号不是内联数据模型的一部分,而是在每次将新记录添加到内联块或由内联块显示时生成。我不需要将这个号码保存在数据库中。它仅供参考 ModelAdmin 类中的另一个字段。

我是 django 的新手,我似乎无法弄清楚如何做到这一点。

任何建议,将不胜感激。

问候,瑞克

4

1 回答 1

9

您可以通过管理类使用类变量和返回行号的方法轻松地对现有内联进行编号:

class MyInlineAdmin(admin.TabularInline):
    line_numbering = 0
    fields = ('line_number', 'other_field')
    readonly_fields = ('line_number',)

    def line_number(self, obj):
        self.line_numbering += 1
        return self.line_numbering

    line_number.short_description = '#'

这将按照它们出现的顺序对任何内联进行编号,包括包含的任何额外(空白)内联。如果您通过“添加另一个”链接添加单个内联,它的行号将是正确的(从最后一个增加一个),但是如果您通过该链接添加多个内联,后续的仍将具有相同的行编号作为最后一个。

不完美,但总比没有好。

于 2017-11-15T17:40:13.823 回答