簡體   English   中英

Django形成多種選擇

[英]Django form multiple choice

我是Django的新手,如果你能給我一些指導,我真的很感激。 我正在嘗試創建一個允許用戶勾選一個或多個選項的表單。 我知道我必須將MultipleChoiceField字段與CheckboxSelectMultiple小部件一起使用,但Django文檔沒有提供關於此主題的示例。 如果你能給我一個例子並解釋我如何處理結果,我將不勝感激。 例如,如果我有一個帶有選項abcd的表單,並且用戶勾選c和d。 另外我如何指定選項(我不想使用數據庫,字符串列表是我的想法)? 非常感謝

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>

結果:

checkboxselectmultiple

說明:

選擇:

每個元組中的第一個元素是要存儲的實際值。 第二個元素是選項的可讀名稱。

獲取選中的框:

form.cleaned_data.get('picked')將生成'實際值'列表。 例如,如果我用print picked替換了# do something with your results看到:

[u'a', u'c']

在你的控制台中

希望這會有所幫助:D

from django import forms


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

你可以查看這個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)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM