您需要__init__在表单上使用方法,并将request.user作为参数传递.
例如:
class MyModelForm(forms.ModelForm):
# Notice the custom argument 'user'
def __init__(self, user, *args, **kwargs):
super(MyModelForm, self).__init__(*args, **kwargs)
# do something here with user, such as calling log.debug()
class Meta:
model = MyModel
Run Code Online (Sandbox Code Playgroud)
现在在views.py中,您可以像这样创建表单:
form = MyModelForm(request.user)
Run Code Online (Sandbox Code Playgroud)
或者,如果您正在处理POST请求:
form = MyModelForm(request.user, request.POST)
Run Code Online (Sandbox Code Playgroud)
编辑以在评论后更新答案.
要在admin站点中获取用户,您需要在admin.py中将以下方法添加到管理模型中:
def save_model(self, request, obj, form, change):
# Do something with request.user here
obj.save()
Run Code Online (Sandbox Code Playgroud)
当然,这意味着您只能在保存期间访问用户.如果您需要访问request.user以获取管理员的其他部分,例如过滤查询集,请参阅James Bennett的这篇文章了解更多信息:
| 归档时间: |
|
| 查看次数: |
190 次 |
| 最近记录: |