Vorrei creare un modulo che includa campi da due modelli separati, insieme ad altri campi regolari (non modello). Il modulo creerà un'istanza di ciascun modello. Io non so penso Posso usare i moduli in linea per questo, dato che non voglio includere tutti i campi di entrambi i modelli.Ottenere il campo modulo Django dal campo modello
Vorrei creare il campo modulo senza codificare il tipo dei campi del modello.
So che posso ottenere un campo modulo da un campo modello utilizzando model_field.formfield()
. Ma come posso ottenere il campo del modello specifico?
La mia prima soluzione:
def get_fields(model_class):
fields = {}
for f in model_class._meta.fields:
fields[f.name] = f
class MyForm(forms.Form):
foo_name = get_fields(Foo)['name'].formfield()
bar_name = get_fields(Bar)['name'].formfield()
other_field = ...
Esiste un equivalente di get_fields
già? È una cattiva idea? Mi sento a disagio nel fare affidamento sull'attributo modello _meta
. O sto andando in questo modo completamente sbagliato?
La soluzione sembra ragionevole per me, ma nemmeno, non vedo il motivo per cui non volete codificare quei 2 campi; forse ottieni i modelli dinamicamente. –
Desidero evitare di codificare a macchina il tipo del campo modulo nel caso in cui cambi mai il tipo del campo modello corrispondente. Non sei sicuro di cosa intendessi per ottenere i modelli in modo dinamico ...? – harto