动态创建ModelForm

时间:2014-12-16 13:28:27

标签: python django forms

我必须与modelForms相同,我想只做一个将军而不是他们。 请参阅下面的代码示例

class CreateStudent(forms.ModelForm):
    class Meta:
        model = Student
        fields = [field.name for field in model._meta.fields if not field.name == 'id']


class CreateGroup(forms.ModelForm):
    class Meta:
        model = Group
        fields = [field.name for field in model._meta.fields if not field.name == 'id']

我希望能够做到这样的事情:

class CreateItem(forms.ModelForm):
    class Meta:
        model = custom_model_name #here I need to pass model from request somehow
        fields = [field.name for field in model._meta.fields if not field.name == 'id']

我希望有/create/Group/create/User等链接 并且我想传递url的最后一部分(GroupUser)以形成构造函数并基于它生成表单。

1 个答案:

答案 0 :(得分:2)

你不能这样做。元属性在定义时进行评估,因此您无法根据运行时的请求更改它。

但是,由于您只有有限数量的模型,并且您没有自定义表单,为什么不定义表单然后使用字典来使用正确的表单?

def create(request, model_class):
    forms = {
        'user': UserForm,
        'group': GroupForm
    }


    form_class = forms[model_class]
    ...
相关问题