2017-11-14 5 views

答えて

1

modelform_factory方法はModelFormクラスを返すメソッドです。なぜそれが有用なのかの例があります。

あなたは、単一のモデルのフォームを使用して単純なビューを持っている場合は、工場の必要がない、あなたは、単にフォームを定義することができます。

class ProductForm(forms.ModelForm): 
    class Meta: 
     model = Product 

def add_product_view(request): 
    form = ProductForm() 
    ... 

しかし、あなたのビューを処理するために必要がある場合は、複数のモデルを使用する場合は、すべてのモデルにフォームクラスを定義する必要はありません。 modelform_factoryを使用すると、フォームクラスを動的に作成できます。

apps.get_model('newapp', 'mymodel') 

def add_model_view(request, model_name): 
    Model = apps.get_model('myapp', model_name) 
    Form = modelform_factory(Model) 

Djangoの管理者は、動的モデルのフォームクラスを生成するためにmodelform_factoryを使用しています。つまり、Django管理者にモデルを登録するたびに、モデルフォームを定義する必要はありません。

関連する問題