/ / Django - Diverse forme per modello: django, modelli django, forme django

Django - Diverse forme per modello: django, modelli django, forme django

A seconda dello stato dei miei modelli, voglio mostrare un modulo diverso all'utente. Sto cercando di capire come memorizzare un riferimento alla forma corretta in modo che possa caricarlo a mio avviso.

Una vista normale sarebbe simile a:

from myapp.forms import SomeForm

def view():
form = SomeForm()

Tuttavia, dal momento che non conosco quale forma ha bisogno il mio modello, come posso importare dinamicamente la classe del modulo?

Ho provato questo:

from django.forms import ModelForm
modelforms = ModelForm.__subclasses__()

def get_modelform(model):
return filter(lambda x:x.Meta.model == model, modelforms)[0]

Ma funziona solo se il modulo è stato importato nel progetto. Dal momento che la mia forma vive in un proprio file forms.py, questo non funziona :(

risposte:

1 per risposta № 1

Nel tuo forms.py file, scrivi una funzione che restituisce il modulo corretto in base ai tuoi criteri. Quindi importalo nella tua vista e chiamalo lì.


1 per risposta № 2

Scrivi una funzione che restituisce la classe del modulo necessaria in base alla condizione.


0 per risposta № 3

Devi usare fabricform fabric, potrebbe aiutarti a creare moduli per i tuoi modelli

FormClass = modelform_factory(ModelClass)

https://code.djangoproject.com/browser/django/trunk/django/forms/models.py#L370