1

我在 list_display 中添加了一个小函数来显示多对多字段,并且我正在尝试显示由换行符分隔的 m2m 对象。但是换行符不起作用

我的 Django 管理员:

class ArticleAdmin(admin.ModelAdmin):
     list_filter = ["category",]
     list_display = ('category','article_type', 'get_domains')
     filter_horizontal = ("domain",)

     def get_domains(self, obj):
        x ="\n".join([str(s.name) for s in obj.domain.all()])
        print x  # printing fine
        return x

     get_domains.short_description = 'Domains'   

打印语句做得很好:

   0 errors found
   Django version 1.4.5, using settings 'settings'
   Development server is running at http://127.0.0.1:8000/
   Quit the server with CONTROL-C.
   mykitchenremodelinglosangeles.com:8000
   kitchenremodelerchicagoil.com:8000
   localhost:8000

我附上了管理屏幕输出:

在此处输入图像描述

你能建议这个吗?

4

2 回答 2

7

HTML 中的浏览器会忽略新行。如果您想在不同的行中显示它们,我认为您应该join 使用<br>而不是\n使用allow_tags.

class ArticleAdmin(admin.ModelAdmin):
    list_filter = ["category",]
    list_display = ('category','article_type', 'get_domains')
    filter_horizontal = ("domain",)

    def get_domains(self, obj):
        x ="<br>".join([str(s.name) for s in obj.domain.all()])
        print x  # printing fine
        return x

    get_domains.allow_tags = True

希望这可以帮助!

于 2013-06-24T15:14:21.597 回答
0
 class ArticleAdmin(admin.ModelAdmin):
     list_filter = ["category",]
     list_display = ('category','article_type', 'get_domains')
     filter_horizontal = ("domain",)

     def get_domains(self, obj):
        x ="<br>".join([str(s.name) for s in obj.domain.all()])
        return x

     get_domains.short_description = 'Domains'
     get_domains.allow_tags=True   

它简单地完成了工作!django 管理员很酷:-)

除了这个还有别的办法吗?

于 2013-06-24T15:17:06.613 回答