Django admin list_display换行符

brs*_*gic 10 django django-admin

我尝试在Django的admin端列表显示中显示带有换行符的文本.

class MyModelAdmin(admin.ModelAdmin):
    list_display = ('example')

def example(self,obj):
    return 'TYPE : %s \n RATE : %s \n FAMILY %s'
Run Code Online (Sandbox Code Playgroud)

但是,它显示没有新行,如TYPE : xxx RATE : yyy FAMILY zzz.

我怎么能在Django管理员中这样做?

Ofr*_*viv 29

您必须使用br而不是a \n,并指定允许此字段使用html标记:

def example(self):
    return 'TYPE : %s<br>RATE : %s<br>FAMILY %s' % (self.type, 
                                                    self.rate, 
                                                    self.family)
example.allow_tags = True
Run Code Online (Sandbox Code Playgroud)

或者你可以使用一些更优雅的HTML方式来格式化你的输出(比如用一个类包装每个在span元素中,然后添加一些css然后在下面渲染).


Clo*_*ans 6

在 Django 2/3 中,您应该使用format_html, 因为allow_tags已被弃用。因此,示例代码变为:

from django.utils.html import format_html

class MyModelAdmin(admin.ModelAdmin):
    list_display = ('example',)

    def example(self, obj):
        return format_html('TYPE : %s<br />RATE : %s<br />FAMILY %s' % (
            self.type, self.rate, self.family))
Run Code Online (Sandbox Code Playgroud)