Django:针对不同用户或管理员的不同表单字段?

时间:2013-01-22 06:02:40

标签: django django-forms

此问题是关于向同一页面的不同用户显示输入。我应该创建一个单独的捕获所有窗体并隐藏不同的字段吗?或者我应该为不同的用户使用完全不同的表单?或许是另一种选择?

1 个答案:

答案 0 :(得分:1)

如果这是你的意思,你不应该以'html'方式隐藏表单。

如果Admin表单基于普通表单构建,则可以使用表单继承。

class BaseForm(forms.Form):
    name = forms.CharField(max_length=50)
    ...

#Admin form inherits BaseForm
class AdminForm(BaseForm):
    occupation = forms.CharField(max_length=50)
    ...

如果两种形式完全不同,并且不共享有意义的共同基础,则只需创建两种不同的形式。

设置好表单后,根据用户的参数,让您的视图呈现一种形式或另一种形式。

def createView(request):
    if request.method == 'POST':
        if request.user.is_superuser:
            form = AdminForm(request.POST)
        else:
            form = BaseForm(request.POST)
        ...