2011-07-14 8 views
0

私は1つのモデルを持っており、人によってフィールドを編集できるようになります。例:Djangoでさまざまなフォームを1つのモデルで生成する方法は?

class myForm(forms.ModelForm): 
    fieldone = forms.CharField() 
    fieldtwo = forms.CharField() 
    fieldthree = forms.CharField() 

    class Meta: 
     model = myModel 
     fields = (...???...) 

人1編集することができます。fieldone 人2は、編集することができます:fieldone、fieldtwo 人3を編集することができます。fieldone、fieldtwo、

fieldthreeはどのようにこれを行うには、新しいフォームを作成せず、唯一の変更します"フィールド"フィールド?

答えて

1

そうようにあなたは、単に、例えば、機能をいくつかの種類の工場を使用できます。

def myFormFactory(fields): 
    class myForm(forms.ModelForm): 
     fieldone = forms.CharField() 
     fieldtwo = forms.CharField() 
     fieldthree = forms.CharField() 

     class Meta: 
      model = myModel 
      fields = fields 
    return myForm 

私はフィールドが同様に元のモデルではないフィールドを隠しわからないんだけど。そうでない場合は、フォームのinitの同じパラメータ 'fields'に基づいて調整する必要があるかもしれません

関連する問題