/ / Django - Diferentes formas para model - django, django-models, django-forms

Django - Diferentes formas para model - django, django-models, django-forms

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 № 1

Em 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