django形式

ha2*_*109 -1 django django-forms

有人知道如何记录当前在form.py中输入的用户名

Van*_*ale 5

您需要__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的这篇文章了解更多信息:

用户和管理员