【问题标题】:Get multiple data from checkbox using "request.POST.get"使用“request.POST.get”从复选框获取多个数据
【发布时间】:2020-07-06 17:25:50
【问题描述】:

我尝试在我的views.py中使用下面的方法从复选框中获取多个数据:

if (((request.POST.get('data_choice ')) == ('Salary')) and ((request.POST.get('data_choice ')) and ((request.POST.get('data_choice ')) == ('Overtime')) ):

但问题是“和”条件不起作用,但如果我使用“或”条件,它就可以了。我可以知道我的代码有什么问题吗?难道request.POST.get只能获取1条数据?

choices.py

class DataChoices(models.TextChoices):
    salary = 'Salary',_('Salary')
    bonus = 'Bonus',_('Bonus')
    allowance= 'Allowance',_('Allowance')
    overtime= 'Overtime',_('Overtime')

models.py

class Data(models.Model):
    Data_choices = Data_choices
    data_choices = models.CharField(max_length=40,choices=Data_choices.choices,blank = True, null= True)

forms.py

class dataForm(forms.ModelForm):
    datachoice =  DataChoices
    data_choice =  forms.MultipleChoiceField(label=False,choices=datachoice .choices, required=True,widget=forms.CheckboxSelectMultiple(
        attrs= {
        "checked":"checked"
        }))
    class Meta:
        model = Data
        fields = ('__all__')

html

<form class="form" method="POST">
    {% csrf_token %}
    <fieldset class="form-group">
        <h4 style="display:inline-block;" class="title-section">PRINT FORM</h4>
        <div class="card">
            <div  class="card-body">
                <div class="row col" >
                    <h5>Please select data to be included in the form</h5>
                </div>
                <div class="row mt-4">
                    <div class="col-lg">{{ form.data_choice |as_crispy_field }}</div>
                </div>
            </div>                     
            <div class="col " style="text-align:center;">
                <button class='btn btn-info btn-block'>Next</button>
            </div> 
        </div>
    </fieldset>     
</form>

views.py

if form.is_valid:
    data = {
    'data_choice ':request.POST.get('data_choice '),
    }
    if (((request.POST.get('data_choice ')) == ('Salary')) and ((request.POST.get('data_choice ')) == ('Bonus')) ):
        request.session['decision_data'] = data
        return redirect ('printformA')
    else:
        messages.error(request, f'Error in creating Form')
        return render(request, 'selectdata.html',context)

【问题讨论】:

    标签: python django checkbox


    【解决方案1】:

    使用QueryDict.getlist(key, default=None)

    用法:

    data_choice = request.POST<b>.getlist('data_choice')</b>

    【讨论】:

    • 非常感谢 :)
    猜你喜欢
    • 1970-01-01
    • 2014-12-18
    • 2011-06-27
    • 1970-01-01
    • 2013-07-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多