Django迭代复选框

时间:2017-08-29 12:55:32

标签: python django django-forms

尝试动态创建复选框列表,选中后将执行操作。我按预期创建了复选框,并且我有一个按预期工作的操作。我似乎无法抓住正确的方框来执行操作。例如,当我单击第三个框,或第二个和第三个框时,操作始终在第一个框上执行。我已经验证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)

1 个答案:

答案 0 :(得分:0)

看起来问题在于检查POST字典。以下是该行改变的内容,现在可以使用。

if request.POST.get("%s-%s" % (r.pk, 'active')):

最好我可以告诉,这基本上是在邮政字典中寻找一个值,因为我为每个复选框添加了前缀,我需要返回'prefix-active'的搜索查询,其中前缀是r.pk和活动是表单名称。

如果我没有描述这是如何正常工作的,请更正此答案。