尝试动态创建复选框列表,选中后将执行操作。我按预期创建了复选框,并且我有一个按预期工作的操作。我似乎无法抓住正确的方框来执行操作。例如,当我单击第三个框,或第二个和第三个框时,操作始终在第一个框上执行。我已经验证POST数据正确传递了复选框前缀和表单名称,但不知何故,我告诉代码,如果选中了一个框,则在第一个实例上执行操作,而不是在选中的复选框上执行操作。这就是我所拥有的:
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)
答案 0 :(得分:0)
看起来问题在于检查POST字典。以下是该行改变的内容,现在可以使用。
if request.POST.get("%s-%s" % (r.pk, 'active')):
最好我可以告诉,这基本上是在邮政字典中寻找一个值,因为我为每个复选框添加了前缀,我需要返回'prefix-active'的搜索查询,其中前缀是r.pk和活动是表单名称。
如果我没有描述这是如何正常工作的,请更正此答案。