2014-10-29 69 views
1

我需要創建一個可以選擇多個選項而不是一個的字段。這些選擇是固定的。例如:如何在不使用ManyToManyField的情況下在Django中獲得多個選擇?

如果我們希望從多個選項中選擇一個選項,我們使用帶選項的CharField選項。

SEX_CHOICES = (('M', 'Male'), 
       ('F', 'Female') 
      ) 

class Model1(models.Model): 
    name = models.CharField(max_length=30) 
    sex = models.CharField(max_length=1, choices=SEX_CHOICES) 

但我需要類似的設置多選。我不想使用ManyToManyField,因爲選擇將會被修復,並且隨着時間的推移不會改變。

請指導。

回答

2

你有三個基本的選擇:

  1. 使用類似djangozone曾建議在他的回答。
  2. 爲每個選項添加一個布爾型字段。你說這些選擇不會改變。如果他們真的不改變,爲什麼要使用一種方法讓他們?這爲您提供了比方法#1更多的優點,即您可以對選擇字段進行索引。
  3. 使用多對多的領域。你說你不想這樣做,但不要說爲什麼。

如果他們真的沒有改變,我會去#2。擁有一堆booleanfields是一組不變的選擇的好表示。

+0

我可以走#2,仍然使用'SelectMultiple'小部件? – 2014-12-05 19:28:49

0

我覺得你喜歡這個

from django import forms 


class Test(forms.Form): 
    OPTIONS = (
     ("a", "A"), 
     ("b", "B"), 
     ) 
    name = forms.MultipleChoiceField(widget=forms.SelectMultiple,choices=OPTIONS) 
相關問題