Django mutliple相同的GET参数名称不起作用

智力

我有这个简单的Django表单,用于使用GET表单过滤数据

from reservations.models import Reservation, ServiceType
from django import forms


PAYMENT_OPTIONS = (
    ('CASH', 'Cash'),
    ('ROOM', 'Charge to room'),
    ('ACCOUNT', 'Account'),
    ('VISA', 'Visa'),
    ('MASTERCARD', 'Mastercard'),
    ('AMEX', 'Amex'))

class FilterForm(forms.Form):
    def __init__(self, *args, **kwargs):
        super(FilterForm, self).__init__(*args, **kwargs)
        self.fields['service_date_from'].widget.attrs['class'] = 'datepicker'
        self.fields['service_date_to'].widget.attrs['class'] = 'datepicker'

    service_date_from = forms.CharField()
    service_date_to = forms.CharField()
    payment_options = forms.MultipleChoiceField(widget=forms.CheckboxSelectMultiple,
                                         choices=PAYMENT_OPTIONS)

然后在模板中:

<fieldset>
    <label>{{form.payment_options.label}}</label>
    {{form.payment_options}}
</fieldset>

HTML:

<fieldset>
   <label>Payment options</label>
   <ul id="id_payment_options">
      <li><label for="id_payment_options_0"><input id="id_payment_options_0" name="payment_options" type="checkbox" value="CASH"> Cash</label></li>
      <li><label for="id_payment_options_1"><input id="id_payment_options_1" name="payment_options" type="checkbox" value="ROOM"> Charge to room</label></li>
      <li><label for="id_payment_options_2"><input id="id_payment_options_2" name="payment_options" type="checkbox" value="ACCOUNT"> Account</label></li>
      <li><label for="id_payment_options_3"><input id="id_payment_options_3" name="payment_options" type="checkbox" value="VISA"> Visa</label></li>
      <li><label for="id_payment_options_4"><input id="id_payment_options_4" name="payment_options" type="checkbox" value="MASTERCARD"> Mastercard</label></li>
      <li><label for="id_payment_options_5"><input id="id_payment_options_5" name="payment_options" type="checkbox" value="AMEX"> Amex</label></li>
   </ul>
</fieldset>

问题是,当我选择两个或多个付款方式时,我仅获得网址中的最后一个。

例如,当我选择“现金和帐户”时,会得到类似?payment_options=ACCOUNT而不是?payment_options=CASH&payment_options=ACCOUNT

我该如何解决?我认为payment_options应该这样,payment_options[]但是不知道该怎么做。

落后的方式

PAYMENT_OPTIONS选择的数组还可以。

这就是我直接从模型获取付款方式的方式

class MyForm(forms.ModelForm):
def __init__(self, *args, **kwargs):
    super(MyForm, self).__init__(*args, **kwargs)

self.fields['payments'] = forms.ModelMultipleChoiceField(
                                queryset=Payment.objects.all(),
                                required=True,
                                error_messages = {'required': 'Payment Options is Required!'},
                                label='Payment Types',
                                widget=forms.CheckboxSelectMultiple(attrs={
                                  'class': 'checkbox-inline',}))

请注意 ModelForm

class MyForm(forms.ModelForm): 

还有 ModelMultipleChoiceField

self.fields['payments'] = forms.ModelMultipleChoiceField(

另请注意,我使用的是POST方法来保存结果。

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

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

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章