Django - 模型的不同形式

时间:2011-05-19 11:38:18

标签: django django-models django-forms

根据我的模型状态,我想向用户显示不同的表单。我正在试图弄清楚如何存储对正确表单的引用,以便我可以在我的视图中加载它。

普通视图如下所示:

from myapp.forms import SomeForm

def view():
form = SomeForm()

但是,由于我不知道我的模型需要哪种形式,我将如何动态导入表单类?

我试过了:

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

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

但它仅在表单已导入项目时才有效。由于我的表单存在于自己的forms.py文件中,因此不起作用:(

3 个答案:

答案 0 :(得分:1)

根据条件编写一个返回所需表单类的函数。

答案 1 :(得分:1)

在您的forms.py 文件中,编写一个根据您的条件返回正确表单的函数。然后将其导入您的视图并在那里调用它。

答案 2 :(得分:0)

您必须使用modelform结构,它可以帮助您为模型制作表单

FormClass = modelform_factory(ModelClass)

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