在Django中选中的复选框列出

塞巴斯蒂安·图图亚努(Sebastian Tutuianu)

因此,我想获取选中的复选框项目ID作为列表,并将其显示在另一页上。但是,当我到达那个特定页面时,我得到的值是“ None”而不是ID列表。可能出什么问题了?我尝试了一些与网站上已经发布的其他问题不同的版本,但结果是相同的。

这是代码:

  • models.py:
from django.db import models

class afirmatii(models.Model):
    text = models.CharField(max_length = 250)

    def __str__(self):
        return self.text
  • views.py:
def exam(request):
    if request.method == 'POST':
        checks = request.POST.get('selected[]')
        request.session['checks2'] = checks

    context = {
        'title' : 'Title1',
        'aff': afirmatii.objects.order_by('id')
    }
    return render(request, 'pages/exam.html', context)


def result(request):
    checks = request.session.get('checks2')
    context = {
        'title' : 'Title2',
        'checks': checks
    }
    return render(request, 'pages/result.html', context)
  • inspect.html:
{% extends "./base.html" %}
{% block content %}
<div class="text-break">
    <form action="{% url 'result' %}" method="POST">
        {% csrf_token %}
        {% for q in aff %}
        <div class="border mb-3 rounded-sm bg-light p-2">
            <div class="custom-control custom-checkbox checkbox-info">
                <input type="checkbox" class="custom-control-input" id="{{ q.id }}" name = "selected[]">
                <label class="custom-control-label" for="{{ q.id }}" name = 'selected[]'> {{ q.text }} </label>
            </div>
        </div>
        {% endfor %}
        <button type="submit" class="btn btn-md btn-outline-info">Next</button>
    </form>
</div>
{% endblock content %}
  • result.html:
{% extends "./base.html" %}
{% block content %}
<body>
    <div class="text-center">
        <p class="pb-5"> {{ checks }} </p><br>
        <div class="row">
            <div class="col">
                <a href="{% url 'home' %}" class="btn btn-md btn-outline-info" type="button">Home</a>
            </div>
            <div class="col">
                <a href="{% url 'home' %}" class="btn btn-md btn-outline-info" type="button">Learn more</a>
            </div>
        </div>
    </div>
</body>
{% endblock content %}
雅克(Jacek B Budzynski)

您可以尝试使用FORMSETS表单集是一个抽象层,可以在同一页面上使用多个表单。

您可以根据表中的记录绘制问题列表,并获取已标记答案的ID(或其他字段)

表格

class ExamForm(forms.Form):

    checkbox = forms.BooleanField(required=False)
    id = forms.CharField(widget=forms.HiddenInput)
    text = forms.CharField(widget=forms.HiddenInput)

views.py

from django.shortcuts import render
from django.forms import formset_factory
from .forms import *


def exam(request):

    aff = afirmatii.objects.order_by('id')

    exam_formset = formset_factory(ExamForm, extra=0)

    formset = exam_formset(initial=[{'id': x.id, 'text': x.text} for x in aff])

    checks = []

    if request.method == 'POST':
        formset = exam_formset(request.POST)

        if formset.is_valid():
            for form in formset.forms:
                if form.cleaned_data.get('checkbox', None):
                    checks.append(form.cleaned_data)

    context = {
        'formset': formset,
        'checks': checks,
    }

    return render(request, 'pages/exam.html', context)

Exam.html

{% if not checks %}

  <h1>Exam:</h1>
  <form action="{% url 'exam' %}" method="POST">
  {% csrf_token %}

    {{ formset.management_form }}
    {% for form in formset.forms %}

      <div class="form-group">
        {{ form.checkbox }}
        {{ form.text.value }}
        {{ form.id }}
        {{ form.text }}
      </div>

    {% endfor %}

    <button type="submit" class="btn btn-primary">Submit</button>
  </form>

{% else %}

  <h1>Results:</h1>

  {% for check in checks %}
    <p>{{ check.id }} {{ check.text }}</p>
  {% endfor %}

{% endif %}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

复选框未在javascript中选中?

来自分类Dev

计数GridView中选中的复选框

来自分类Dev

在jQuery中选中复选框

来自分类Dev

计算查询中选中的复选框

来自分类Dev

停止从alpineJS中选中复选框?

来自分类Dev

在Gridview中选中复选框

来自分类Dev

计数GridView中选中的复选框

来自分类Dev

在ListView UWP中选中复选框

来自分类Dev

删除未选中表行中选中的复选框

来自分类Dev

在jquery的数组中选中或不选中复选框

来自分类Dev

在jQuery中选择主复选框时选中/取消选中复选框

来自分类Dev

如果选中了父复选框,则在laravel中选中子复选框

来自分类Dev

添加选中的复选框以在ViewModel中列出

来自分类Dev

列出选中复选框的单元格

来自分类Dev

如何在pyQt中列出已选中的复选框

来自分类Dev

Liferay / Alloy UI中选中的复选框有问题

来自分类Dev

面板中选中了C#Foreach复选框

来自分类Dev

从ajax中选中的复选框获取价值

来自分类Dev

在jqgrid中选中所有复选框的函数

来自分类Dev

如何获得在ValidForm Builder中选中的复选框?

来自分类Dev

jQuery,无法更改复选框中选中的属性

来自分类Dev

jsTree复选框已从html数据中选中

来自分类Dev

复选框已在页面加载中选中并显示输出

来自分类Dev

需要在Angular if语句中选中复选框

来自分类Dev

无法在Material UI中选中循环中的复选框

来自分类Dev

离子显示值已在复选框中选中

来自分类Dev

在PowerApps中选中了有效复选框

来自分类Dev

通过javascript中选中的复选框值

来自分类Dev

在特定类别的div中选中复选框