Dependendo do estado dos meus modelos, quero mostrar um formulário diferente para o usuário. Eu estou tentando descobrir como eu poderia armazenar uma referência para o formulário correto para que eu possa carregá-lo na minha opinião.
Uma visão normal seria semelhante a:
from myapp.forms import SomeForm
def view():
form = SomeForm()
No entanto, desde que eu não sei qual formulário meu modelo precisa, como eu iria importar dinamicamente a classe de formulário?
Eu tentei isso:
from django.forms import ModelForm
modelforms = ModelForm.__subclasses__()
def get_modelform(model):
return filter(lambda x:x.Meta.model == model, modelforms)[0]
Mas só funciona se o formulário foi importado para o projeto. Como minha forma mora em seu próprio arquivo forms.py, isso não funciona :(
Respostas:
1 para resposta № 1Em seu forms.py arquivo, escreva uma função que retorne o formulário correto de acordo com seus critérios. Em seguida, importe isso para a sua visualização e chame-o lá.
1 para resposta № 2
Escreva uma função que retorne a classe de formulário necessária de acordo com a condição.
0 para resposta № 3
Você tem que usar modelform fabric, isso pode ajudá-lo a criar formulários para seus modelos
FormClass = modelform_factory(ModelClass)
https://code.djangoproject.com/browser/django/trunk/django/forms/models.py#L370