Django admin list_display换行符

时间:2011-10-14 19:07:51

标签: django django-admin

我尝试在Django的管理端列表显示中显示带有换行符的文本。

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

def example(self,obj):
    return 'TYPE : %s \n RATE : %s \n FAMILY %s'

但是,它显示时没有TYPE : xxx RATE : yyy FAMILY zzz等新行。

如何在Django admin中执行此操作?

3 个答案:

答案 0 :(得分:27)

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

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

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

答案 1 :(得分:3)

在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))

答案 2 :(得分:0)

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

def示例(自己): 返回'TYPE:%s
RATE:%s
家庭%s'%(self.type, 自评 自家) example.allow_tags = True 或者,您可以使用一些更优雅的HTML格式来格式化输出(例如,将它们包装在具有特定类的span元素中,并添加一些CSS以使它们在彼此下方呈现)。