我尝试在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中执行此操作?
答案 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以使它们在彼此下方呈现)。