django - 用户认证后修改表单的字段
问题描述
我有一个继承自UpdateView
and的观点UserPassesTestMixin
。两种类型的用户可以访问它——超级用户或普通用户。我确定它在哪一个test_func()
并将结果存储在self.superuser
. 现在我想根据用户的级别修改显示的表单(即如果当前用户不是超级用户,则禁用表单中的几乎所有字段,否则将它们全部启用)。我应该重写哪个视图方法来修改视图的表单(在这种情况下禁用必要的字段)?或者这个想法是错误的,我应该以不同的方式处理这个问题?
解决方案
您可以将识别用户所需的数据传递给表单,并在表单中获取数据,__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)
# ....
推荐阅读
- laravel - 如何在生产服务器中设置 browsersync
- github - 我正在尝试返回 Github 中的特定提交以消除我犯的错误
- java - 将字母映射到电话键盘上的数字
- python-3.x - 如何使用 JWT 针对 Python Flask API 正确验证 Python Flask-WTF Web 应用程序用户
- python - 如何将度数转换为小时和分钟
- sql - SQL - 每行使用 CUBE 总计
- asp.net-core - 如何将一个项目中的 proto 文件包含在另一个项目中
- javascript - JavaScript 函数未从表单获取输入
- mongodb - 用于 Golang 的 Mongo DB 驱动程序上的 Mongo DB 查询
- javascript - Webpack-dev-server 很慢?