如何为tableularinline块的每一行添加行号

时间:2014-05-01 17:04:10

标签: django django-1.6 django-modeladmin

我有一个ModelAdmin类,其内联类型为TabularInline。我想要的是TabularInline的每一行都有一个显示在其左侧的行号。当新记录添加到内联时,此数字将增加,并且在编辑表单时将显示该数字。

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

我是django的新手,我似乎无法弄清楚如何实现这一目标。

任何建议都将不胜感激。

此致 瑞克

1 个答案:

答案 0 :(得分:3)

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

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 = '#'

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

不完美,但总比没有好。