根据我的模型状态,我想向用户显示不同的表单。我正在试图弄清楚如何存储对正确表单的引用,以便我可以在我的视图中加载它。
普通视图如下所示:
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文件中,因此不起作用:(
答案 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