如何使用一个模型在Django中生成各种表单?

时间:2011-07-14 11:42:43

标签: django django-forms

我有一个模型,根据人物将能够编​​辑字段。例如:

class myForm(forms.ModelForm):
    fieldone = forms.CharField()
    fieldtwo = forms.CharField()
    fieldthree = forms.CharField()

    class Meta:
        model = myModel
        fields = (...???...)

人1可以编辑:fieldone 人2可以编辑:fieldone,fieldtwo 人3可以编辑:fieldone,fieldtwo,fieldthree

如何在不创建新表单的情况下执行此操作,仅更改“字段”字段?

1 个答案:

答案 0 :(得分:1)

你可以简单地使用某种工厂,例如一个函数,如:

def myFormFactory(fields):
    class myForm(forms.ModelForm):
        fieldone = forms.CharField()
        fieldtwo = forms.CharField()
        fieldthree = forms.CharField()

        class Meta:
            model = myModel
            fields = fields
    return myForm

我不确定字段是否隐藏了原始模型中没有的字段;如果没有,您可能需要根据相同的参数'fields'在表单的 init 中进行一些调整