皆様のお力をお借りしたいです!
現在、Djangoで2つのModel Formを作成したのですが、どちらも共通項目が多いので継承などで1つのクラスなどにまとめたいと思っているのですが、書き方がわからず困っています。
私が、考えているイメージとして
python3
1from django import forms 2 3class BaseForm(forms.ModelForm): 4 class Meta: 5 model = None 6 fields = ( 7 "code", 8 "office", 9 "name", 10 "post", 11 "address", 12 ) 13 widgets = { 14 'code': forms.TextInput(), 15 'office': forms.Select(), 16 'name': forms.Select(), 17 'post': forms.Select(), 18 'address': forms.Select(), 19 } 20 def clean_code(self): 21 code = self.cleaned_data.get('code') 22 # なにか処理 23 return code 24 25 26class AForm(BaseForm): 27 class Meta(BaseForm.meta): 28 model = AModel 29 fields = ( 30 "add_field1", 31 "add_field2" 32 ) + BaseForm.meta.fields 33 widgets = { 34 'add_field1': forms.Select(), 35 'add_field2': forms.Select(), 36 }.update(BaseForm.meta.widgets) 37 def clean_add_field1(self): 38 add_field1 = self.cleaned_data.get('add_field1') 39 # なにか処理 40 return add_field1 41 42 43class BForm(BaseForm): 44 class Meta(BaseForm.meta): 45 model = BModel 46 fields = ( 47 "add_field3", 48 "add_field4" 49 ) + BaseForm.meta.fields 50 widgets = { 51 'add_field3': forms.Select(), 52 'add_field4': forms.Select(), 53 }.update(BaseForm.meta.widgets) 54 def clean_add_field3(self): 55 add_field3 = self.cleaned_data.get('add_field3') 56 # なにか処理 57 return add_field3 58
上記の様に、BaseFormを作りAForm、BFormにBaseFormの元々のfields・widgetsに更に項目を追加したいのですが、
fieldsは追加できたのですが、widgetsではうまく表示してくれません。
どなたか良い方法がわかる方、助けて下さい!
あなたの回答
tips
プレビュー