allow_tags =真不会呈现 标签中的Django管理(allow_tags=True

2019-09-02 03:01发布

我想显示在Django管理的list_display一种形式,但我面临这个问题:

当我定义是这样的:

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

    def pagar_pase(self, obj):
        return """<form action="." method="post">Action</form> """
    pagar_pase.description = 'Testing form output'
    pagar_pase.allow_tags = True

其结果是没有标签的行动,任何想法如何解决这个问题?

谢谢

Answer 1:

以下是出现在文档。 一些提示:

我想你应该包括pagar_paselist_display元组,你也最好使用format_html比三重引号。

from django.utils.html import format_html

class Person(models.Model):
    first_name = models.CharField(max_length=50)
    last_name = models.CharField(max_length=50)
    color_code = models.CharField(max_length=6)

    def colored_name(self):
        return format_html('<span style="color: #{0};">{1} {2}</span>',
                           self.color_code,
                           self.first_name,
                           self.last_name)

    colored_name.allow_tags = True

class PersonAdmin(admin.ModelAdmin):
    list_display = ('first_name', 'last_name', 'colored_name')

在这里,他们首先定义模型,然后创建一个ModelAdmin和那里,它们包括中该方法的名称list_display你错过了哪些。

您的代码应该是这样的:

class MyModelAdmin(admin.ModelAdmin):
    list_display = ('foo', 'my_custom_display', 'pagar_pase')

    def pagar_pase(self, obj):
        # I like more format_html here.
        return """<form action="." method="post">Action</form> """
    pagar_pase.description = 'Testing form output'
    pagar_pase.allow_tags = True

希望能帮助到你!



Answer 2:

好了,所以这里的问题是,list_display是HTML表单里面,所以我试图显示一个表单内的形式,这是一个糟糕的主意......以下解释了为什么

你能巢HTML表单?

希望能帮助到你。



Answer 3:

它看起来像你试图触发上市项目的操作。 也许这是更好地写你自己的执行管理行动 。

下面是一个例子:

def pagar_pase(modeladmin, request, queryset):
    """ Does something with each objects selected """
    selected_objects = queryset.all()
    for i in selected_objects:
        # do something with i

pagar_pase.short_description = 'Testing form output'

class MyModelAdmin(admin.ModelAdmin):
    list_display = ('foo', 'my_custom_display')
    actions = [pagar_pase]


文章来源: allow_tags=True does not render
tag in django admin