2017-08-24 83 views
0

型號:不能讓字段爲空,即使它被設置爲空,空

class Member(models.Model): 

    model_categories = models.CharField(
      max_length = 255, 
      null = True, 
      blank = True) 

形式:

class MemberForm(forms.ModelForm): 

    MODEL_CATEGORIES = (
     ('advisor', 'advisor'), 
     ('member', 'member'), 
     ('admin', 'admin'), 
    ) 


    model_categories = forms.MultipleChoiceField(
      widget = forms.CheckboxSelectMultiple, 
      choices = MODEL_CATEGORIES 
    ) 

    class Meta: 
     model = Member 
     fields = [ 'model_categories' ] 

不過當我提交表單,它需要現場model_categories,可以沒有選擇框。是什麼原因 ?

回答

0

docs

Field.required¶ 默認情況下,每個字段級假設需要的值,所以如果你傳遞一個空值 - 無或空字符串(「」) - 那麼幹淨()將引發ValidationError例外:

所以你必須設置需要假以你的領域

model_categories = forms.MultipleChoiceField(required=False, 
      widget = forms.CheckboxSelectMultiple, 
      choices = MODEL_CATEGORIES 
    ) 
1

django表單中的字段默認爲required=True。在表單字段定義設置required=False

model_categories = forms.MultipleChoiceField(
      widget = forms.CheckboxSelectMultiple, 
      choices = MODEL_CATEGORIES, 
      required=False 
    ) 

更多:

blank=True模型是決定耐候本場可在空白表單與否。

,通過定義您的MemberForm

model_categories = forms.MultipleChoiceField(
     widget = forms.CheckboxSelectMultiple, 
     choices = MODEL_CATEGORIES 

領域你是從哪裏ModelForm屬性requried通過模型blank=True設置False,使用默認的屬性required=True來自新字段定義overiding領域。