我想創建一個表單,其中包含來自兩個單獨模型的字段以及其他一些常規(非模型)字段。該表單將創建每個模型的一個實例。我不想認爲我可以使用內聯formset,因爲我不想包含這兩個模型的所有字段。從模型字段獲取Django表單字段
我想創建表單字段,而不用硬編碼模型字段的類型。
我知道我可以使用model_field.formfield()
從模型字段獲取表單字段。但是,我怎樣才能獲得特定的模型領域?
我的第一個解決方案:
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 = ...
是否存在的get_fields
已經等同?這是一個壞主意嗎?依靠模型_meta
屬性我不舒服。或者,我是否會以完全錯誤的方式進行討論?
您的解決方案聽起來很合理的,我,本書雖然,我不明白爲什麼你不想硬編碼的2場;也許你動態地獲得模型。 – 2010-04-06 11:30:13
我想避免硬編碼表單域的類型,以防我改變相應模型域的類型。不確定你想要動態獲取模型的意義......? – harto 2010-04-06 13:00:10