2013-05-07 33 views
1

我想显示在Django管理的list_display一种形式,但我面临这个问题:allow_tags =真不呈现在Django管理<form>标签

当我定义是这样的:

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 

而结果是Action没有标签,有什么想法该如何解决?

谢谢

+0

我怀疑这个问题是你认为的问题。 '

'标签没有任何显示输出:他们唯一的结果就是将内容视为可提交的表单。也许你的意思是拥有一个''标签,尽管如果没有实际提交的东西,这将无济于事。 – 2013-05-07 06:07:10

回答

1

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

Can you nest html forms?

希望它能帮助。

2

以下是文档中出现的内容。一些提示:

我认为你应该包括pagar_pase在你的list_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 

希望它能帮助!

+0

也无法正常工作,我已经编辑了我的问题,包括list_display上的pagar_pase,并且不能像这种方式工作... – pahko 2013-05-07 14:46:29

+0

真正的问题是,即使我使用allow_tags = True或format_html,django不会在列表显示上呈现表单标记,它会呈现大量标签,但不会形成标签 – pahko 2013-05-07 14:48:40

+1

它很有意义,因为它已经在表单中。你应该尝试另一种方法,我猜:( – 2013-05-07 17:33:03

0

它看起来像你试图触发列出的项目的行动。也许这通过编写你自己的admin actions更好地执行。

下面是一个例子:

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] 
+0

与自定义管理员操作不适用于我,因为我想呈现一个贝宝形式list_display – pahko 2013-05-07 14:45:41