用户认证后修改表单的字段

时间:2018-08-10 00:32:09

标签: django

我有一个继承自UpdateViewUserPassesTestMixin的视图。两种类型的用户可以访问它-超级用户或普通用户。我确定它在test_func()中是哪一个,并将结果存储在self.superuser中。现在,我想根据用户级别修改显示的表单(即,如果当前用户不是超级用户,则禁用表单中的几乎所有字段,否则将其全部启用)。我应该重写哪种视图方法来修改视图的表单(在这种情况下,请禁用必要的字段)?还是这个想法错误,我应该采取不同的方法?

1 个答案:

答案 0 :(得分:0)

您可以将识别用户所需的数据传递给表单,然后在表单中,您可以在__init__中获取数据,然后可以在其中更改self.fields以反映类型用户。

如果该示例是为超级用户实例化的,请检查以下示例,该示例将ReadOnly删除到字段superuser_field中。

  class MyForm(forms.Form):

  def __init__(self, is_superuser=False, *args, **kwargs):
    super(MyForm, self).__init__(*args, **kwargs)
    if is_superuser:
        self.fields['superuser_field'].disabled = False

如果我理解正确的话,可以在您的代码中

def yourview(...):
    # ...
    myform = MyForm(is_superuser=self.superuser)
    # ....