0

我正在使用模型类上的方法在更改列表表单上显示一个按钮。我有一个非常特殊的问题,只有第一个按钮不起作用。即使我有两种单独的按钮方法,第一行的左侧也不起作用。我检查了页面的源代码,错误是

Saw a form start tag but there was already an active form element. Nested tags are not allowed. Ignoring the tag.

在进一步检查中我发现

<form id="grp-changelist-form" action="" method="post"><input type='hidden' name='csrfmiddlewaretoken' value='l6Z2ez9F00XMVQjp0KIRIKgRIcQ9nnQc' />

这个表格要打开。任何解决此问题的建议。相关代码是

Class MyModel(models.Model):
.
.
  def method1(self):
     return '<form action="path/to/action1" method="get"><input type="submit" value="%s"></form>' % (self.id, label)

  def method2(self):
     return '<form action="path/to/action2" method="get"><input type="submit" value="%s"></form>' % (self.id, label)

然后在 admin 的 list_display 上使用这两种方法。我正在使用 Grappelli。

4

2 回答 2

1

看起来您只是想在管理更改列表中提供一个链接,以转到将对行执行操作的视图 - 您不需要表单来执行此操作,因为您只是简单地使用 GET关联:

def method2(self):
    return '<a href="path/to/action/%s?param1=%s" target="_blank">Do Something</a>' % (self.id, label)

您遇到问题的原因是您不能在表单中嵌套表单(django admin 中的整个更改列表已经是一个表单)

于 2013-06-21T10:28:35.560 回答
0

如果您只是想对一行执行操作。使用操作: https ://docs.djangoproject.com/en/dev/ref/contrib/admin/actions/

您还可以创建一个字段 list_editable: https ://docs.djangoproject.com/en/1.5/ref/contrib/admin/#django.contrib.admin.ModelAdmin.list_editable

如果您想发明自己的东西(为什么要使用框架?):使用获取参数创建链接。就像 Timmy O'Mahony 建议的那样,或者将您的链接(没有获取参数)指向自定义模型表单。

于 2013-06-21T21:19:45.057 回答