我有兴趣为管理界面创建一个动作,除了所选项目之外还需要一些额外的信息.我的例子是批量添加漫画到系列.(是的,我知道显而易见的答案是创建一个具有X到X关系的模式,但为了一个简单的例子,请耐心等待).
在这个例子中,我创造了100个漫画.在创建它们之后,我想将它们与已经创建的系列对象相关联.要在管理员中执行此操作,我想选择项目然后启动操作.然后我应该被问到要使用哪个系列对象(通过弹出窗口,中间窗体等).
我按照这里的说明声称通过中间形式完成此任务.使用它之后,我没有得到任何更多的错误,但是动作本身也没有被执行 - forloop永远不会被执行.相反,它返回漫画的管理列表,并显示以下消息:"未选择任何操作".
我的admin.py方法:
from django.shortcuts import render_to_response
from django.template import RequestContext
from django.http import HttpResponseRedirect
def addSeries(self, request, queryset):
form = None
if 'cancel' in request.POST:
self.message_user(request, 'Canceled series linking.')
return
elif 'link_series' in request.POST:
form = self.SeriesForm(request.POST)
if form.is_valid():
series = form.cleaned_data['series']
for x in queryset:
y = Link(series = series, comic = x)
y.save()
self.message_user(request, self.categorySuccess.render(Context({'count':queryset.count(), 'series':series})))
return HttpResponseRedirect(request.get_full_path())
if not form:
form = self.SeriesForm(initial={'_selected_action': request.POST.getlist(admin.ACTION_CHECKBOX_NAME)})
return render_to_response('setSeries.html', {'comics': queryset, 'form': form, 'path':request.get_full_path()}, …Run Code Online (Sandbox Code Playgroud)