【发布时间】:2011-02-04 18:18:47
【问题描述】:
我想创建一个表单,其中包含来自两个独立模型的字段以及其他一些常规(非模型)字段。该表单将创建每个模型的实例。我不认为我可以为此使用内联表单集,因为我不想包含两个模型中的所有字段。
我想创建表单字段而不对模型字段的类型进行硬编码。
我知道我可以使用 model_field.formfield() 从模型字段中获取表单字段。但是如何获取具体的model字段呢?
我的第一个解决方案:
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 属性感到不舒服。还是我的做法完全错误?
【问题讨论】:
-
您的解决方案对我来说听起来很合理,尽管如此,我不明白您为什么不想对这两个字段进行硬编码;也许您可以动态获取模型。
-
我想避免对表单字段的类型进行硬编码,以防我更改相应模型字段的类型。不确定动态获取模型是什么意思...?
标签: python django django-models django-forms