Django form multiple choice

后端 未结 3 441
花落未央
花落未央 2020-12-08 08:09

I am a newbie in Django and I would really appreciate it if you could offer me some guidance. I am trying to create a form that allows a user to tick one or more options. I

相关标签:
3条回答
  • 2020-12-08 08:35

    hope this helps :D

    from django import forms
    
    
    class Test(forms.Form):
        OPTIONS = (
            ("a", "A"),
            ("b", "B"),
            )
        name = forms.MultipleChoiceField(widget=forms.CheckboxSelectMultiple,
                                             choices=OPTIONS)
    
    0 讨论(0)
  • 2020-12-08 08:43

    forms.py

    class SomeForm(forms.Form):
        CHOICES = (('a','a'),
                   ('b','b'),
                   ('c','c'),
                   ('d','d'),)
        picked = forms.MultipleChoiceField(choices=CHOICES, widget=forms.CheckboxSelectMultiple())
    

    views.py

    def some_view(request):
        if request.method == 'POST':
            form = SomeForm(request.POST)
            if form.is_valid():
                picked = form.cleaned_data.get('picked')
                # do something with your results
        else:
            form = SomeForm
    
        return render_to_response('some_template.html', {'form':form },
            context_instance=RequestContext(request))
    

    some_template.html

    <form method='post'>
        {{ form.as_p }}
        <input type='submit' value='submit'>
    </form>
    

    results:

    checkboxselectmultiple

    explanation:

    choices:

    The first element in each tuple is the actual value to be stored. The second element is the human-readable name for the option.

    getting selected boxes:

    form.cleaned_data.get('picked') will result in a list of the 'actual values'. For example, if I replaced the # do something with your results with print picked you see:

    [u'a', u'c']
    

    in your console

    0 讨论(0)
  • 2020-12-08 08:43

    you can check this https://pypi.python.org/pypi/django-multiselectfield/

    from multiselectfield import MultiSelectField
    
    # ...
    
    MY_CHOICES = (('item_key1', 'Item title 1.1'),
              ('item_key2', 'Item title 1.2'),
              ('item_key3', 'Item title 1.3'),
              ('item_key4', 'Item title 1.4'),
              ('item_key5', 'Item title 1.5'))
    
    MY_CHOICES2 = ((1, 'Item title 2.1'),
               (2, 'Item title 2.2'),
               (3, 'Item title 2.3'),
               (4, 'Item title 2.4'),
               (5, 'Item title 2.5'))
    
    class MyModel(models.Model):
    
        # .....
    
        my_field = MultiSelectField(choices=MY_CHOICES)
        my_field2 = MultiSelectField(choices=MY_CHOICES2,
                                 max_choices=3,
                                 max_length=3)
    
    0 讨论(0)
提交回复
热议问题