【问题标题】:Django - Different forms for modelDjango - 模型的不同形式
【发布时间】:2011-05-19 11:38:18
【问题描述】:

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

普通视图如下所示:

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 文件中,因此这不起作用:(

【问题讨论】:

  • 导入所有表单并仅使用您需要的表单有什么问题?

标签: django django-models django-forms


【解决方案1】:

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

      你必须使用modelform fabric,它可以帮助你为你的模型制作表格

      FormClass = modelform_factory(ModelClass)

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

      【讨论】:

        猜你喜欢
        • 2013-11-04
        • 2011-11-09
        • 2017-04-18
        • 2012-07-15
        • 1970-01-01
        • 2018-11-25
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多