【发布时间】:2011-08-09 13:59:07
【问题描述】:
我想要一个自定义 sn-p 的 html 表单代码,它允许用户选择一个“培训”,然后将其用作 django-admin 模型过滤器的“参与者”的查询参数。
我已经在modeladmin上成功创建了过滤器:
class ParticipantAdmin(RestrictedModelAdmin):
list_filter = ('training__name',)
可能值得注意的是 RestrictedModleAdmin 是 ModelAdmin 的子类,它为模型提供行级安全性;登录的用户应该只能看到他们拥有的行。
因此,使用此过滤器的网址在仅使用该管理界面时看起来像这样:
/admin/core/participant/?training__name=Menno+Ropes
一切都很好。现在我想我应该能够创建一个非常简单的表单,允许选择有效的“培训”并将其作为 GET 提交给 /admin/core/participant/。
<form method="GET" action="/admin/core/participant/">{% csrf_token %}
<ol>
<li>Select your training:
<select name='training__name'>
<option value=''>—</option>
{% for training in trainings %}
<option value='{{ training.name }}'>{{ training }}</option>
{% endfor %}
</select>
</li>
<li>See participants for that training.
<input type='submit' name='submit' value='Submit' /></li>
</ol>
</form>
这最后一点似乎不起作用。 django 内脏中的一些魔法 foo 似乎总是将提交内容破坏为:
/admin/core/participant/?e=1
这显然没有选择适当的过滤器值,因此显示了未过滤的“参与者”列表。
发生了什么事?我该怎么做才能让它允许我的 GET 参数传递给管理模型?
提前致谢。
PS) Django 1.3+
【问题讨论】:
标签: django django-admin