我想创建一个表单,其中包含来自两个单独模型的字段以及其他一些常规(非模型)字段。该表单将创建每个模型的一个实例。我不想认为我可以使用内联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