1

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

4

1 回答 1

1

如果这就是您的意思,您不应该以“html”方式隐藏表单。

如果管理员表单建立在普通表单之上,您可以使用表单继承。

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)
        ...
于 2013-01-22T07:25:08.353 回答