Django迭代复选框
问题描述:
试图动态创建一个复选框列表,当选中它时将执行一个操作。我有按预期创建的复选框,并且我有一个按预期工作的操作。我似乎无法控制正确的框来执行操作。例如,当我单击第三个框或第二个和第三个框时,动作总是在第一个框中执行。我已验证POST数据正确传递了选中的框前缀和表单名称,但不知何故,我告诉代码,如果选中了一个框,请在第一个实例上执行操作,而不是在复选框或框上执行操作。以下是我有:Django迭代复选框
forms.py
class remove_resource(forms.Form):
active = forms.BooleanField(label_suffix='', label='', required=False)
views.py
def edit_project_resource (request, offset):
list_resources = Allocation.objects.filter(project_id=offset).filter(active=True).order_by('user_id').distinct('user_id')
display = {}
for r in list_resources:
check = remove_resource(prefix = r.pk)
display[r.user_id] = (check, r.user_id)
if request.method == 'POST':
check = remove_resource(request.POST, prefix = r.pk)
if check.is_valid():
if request.POST.get(check, True):
Allocation.objects.filter(project_id=offset).filter(user_id = r.user_id).update(active=False)
return HttpResponseRedirect('/project_profile/%s/' % offset)
答
貌似问题是在检查POST字典。以下是该行改为的内容,现在可以使用。
if request.POST.get("%s-%s" % (r.pk, 'active')):
尽我所知,这基本上是寻找在后字典的值,因为我加入前缀每个复选框,我需要返回“前缀处于激活状态”,其中前缀是的搜索查询r.pk和活动是表单名称。
如果我没有描述如何正确工作,请更正此答案。