python - 如何在 ModelForm init() 中获取当前用户?
问题描述
我想为每个具有不同权限的用户显示不同的内容,我试图从init()
ModelForm 类中的函数中获取当前用户,但失败了
下面的代码是我当前在 ModelForm 中的 init()
def __init__(self, *args, **kwargs):
self.user = kwargs.pop('user',None)
super(MyForm, self).__init__(*args, **kwargs)
但是 self.user 仅在发送表单后才起作用,例如在 is_valid()
函数中或在clean_data()
函数中
我总是得到“无”值
我应该继续尝试在 ModelForm 中获取当前用户self.user
,还是有更好的方法来实现该功能?init()
init()
解决方案
您需要从视图发送此数据。例如,在基于通用类的编辑视图中,您可以使用get_form_kwargs():
class YourView(FormView):
form_class = YourForm
...
def get_form_kwargs(self):
kwargs = super(YourView, self).get_form_kwargs()
kwargs['user'] = self.request.user
return kwargs
在其他情况下,通过传递已知参数启动表单user
:
def some_view(request):
form = YourForm(request.POST, user=request.user)
推荐阅读
- java - CompareTo 不允许比较两个对象
- rendering - D3D11 CreateDeferredContext 错误,但从未创建延迟渲染上下文
- node.js - NodeJS:强制“正确”导入名称的 ESLint 规则
- c# - 使用运算符 c# 进行规则验证
- c - CS50 复数:源代码中的 return 2 是什么意思?
- vb.net - 在多个分隔符之间拆分文本
- css - Grid vs Flex 用于实现类似圣杯的布局
- performance - 有没有办法加速/批量谷歌日历读/写?
- python - Kivy 滑块触发器切换按钮
- python - 从 pandas.read_sql_query().to_dict() 获取下一个键并用于字典理解