복붙노트

[PYTHON] 장고 양식 다중 선택

PYTHON

장고 양식 다중 선택

나는 장고의 초보자이며, 나에게 약간의 안내를 해줄 수 있다면 정말 고마워 할 것이다. 사용자가 하나 이상의 옵션에 체크 할 수있는 양식을 작성하려고합니다. CheckboxSelectMultiple 위젯과 함께 MultipleChoiceField 필드를 사용해야한다는 것을 이해했지만 Django 문서는이 항목에 대한 예제를 제공하지 않습니다. 예를 들어 설명하고 결과를 처리하는 방법을 설명 할 수 있다면 감사하게 생각합니다. 예를 들어 옵션에 a b c d라는 형식이 있고 사용자가 c와 d를 틱하면. 또한 선택 방법을 지정하려면 어떻게해야합니까 (DB를 사용하지 않고 문자열 목록을 사용하고 싶습니다). 고마워.

해결법

  1. ==============================

    1.희망이 도움이 : D 조

    희망이 도움이 : D 조

    from django import forms
    
    
        class Test(forms.Form):
            OPTIONS = (
                ("a", "A"),
                ("b", "B"),
                )
            name = forms.MultipleChoiceField(widget=forms.CheckboxSelectMultiple,
                                             choices=OPTIONS)
    
  2. ==============================

    2.forms.py

    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>
    

    결과 :

    설명:

    선택 사항 :

    선택한 상자 가져 오기 :

    form.cleaned_data.get ( 'picked')는 '실제 값'목록을 생성합니다. 예를 들어 # 작업 결과를 인쇄물로 선택하여 결과를 # 대체하면 다음과 같이 표시됩니다.

    [u'a', u'c']
    

    당신의 콘솔에

  3. ==============================

    3.당신은 이것을 확인할 수있다 https://pypi.python.org/pypi/django-multiselectfield/

    당신은 이것을 확인할 수있다 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)
    
  4. from https://stackoverflow.com/questions/5747188/django-form-multiple-choice by cc-by-sa and MIT license