Django之ModelForm組件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
ModelForm
     a.   class  Meta:
             model,                            # 對應Model的
             fields = None ,                      # 字段
             exclude = None ,                     # 排除字段
             labels = None ,                      # 提示信息
             help_texts = None ,                  # 幫助提示信息
             widgets = None ,                     # 自定義插件
             error_messages = None ,              # 自定義錯誤信息(總體錯誤信息from django.core.exceptions import NON_FIELD_ERRORS)
             field_classes = None                # 自定義字段類 (也能夠自定義字段)
             localized_fields = ( 'birth_date' ,)  # 本地化,如:根據不一樣時區顯示數據
             如:
                 數據庫中
                     2016 - 12 - 27  04 : 10 : 57
                 setting中的配置
                     TIME_ZONE  =  'Asia/Shanghai'
                     USE_TZ  =  True
                 則顯示:
                     2016 - 12 - 27  12 : 10 : 57
     b. 驗證執行過程
         is_valid  - > full_clean  - > 鉤子  - > 總體錯誤
 
     c. 字典字段驗證
         def  clean_字段名( self ):
             # 能夠拋出異常
             # from django.core.exceptions import ValidationError
             return  "新值"
     d. 用於驗證
         model_form_obj  =  XXOOModelForm()
         model_form_obj.is_valid()
         model_form_obj.errors.as_json()
         model_form_obj.clean()
         model_form_obj.cleaned_data
     e. 用於建立
         model_form_obj  =  XXOOModelForm(request.POST)
         #### 頁面顯示,並提交 #####
         # 默認保存多對多
             obj  =  form.save(commit = True )
         # 不作任何操做,內部定義 save_m2m(用於保存多對多)
             obj  =  form.save(commit = False )
             obj.save()       # 保存單表信息
             obj.save_m2m()   # 保存關聯多對多信息
 
     f. 用於更新和初始化
         obj  =  model.tb.objects.get( id = 1 )
         model_form_obj  =  XXOOModelForm(request.POST,instance = obj)
         ...
 
         PS: 單純初始化
             model_form_obj  =  XXOOModelForm(initial = {...})
相關文章
相關標籤/搜索