Python 在django中,如何将用户名传递到表单内的函数中?

Python 在django中,如何将用户名传递到表单内的函数中?,python,django,Python,Django,我有一个表单,它有一个变量,该变量调用一个函数来获取一个名称列表。我需要将当前登录用户作为动态参数变量传递到此函数中 我已经花了大约2天的时间在这个问题上,试图找到任何我能找到的解决方案。找不到任何有效的。我已尝试初始化请求对象,但无法使其正常工作 class ManagerForm(forms.Form): names = get_employee_names(<<dynamic username goes here>>) manager = forms

我有一个表单,它有一个变量,该变量调用一个函数来获取一个名称列表。我需要将当前登录用户作为动态参数变量传递到此函数中

我已经花了大约2天的时间在这个问题上,试图找到任何我能找到的解决方案。找不到任何有效的。我已尝试初始化请求对象,但无法使其正常工作

class ManagerForm(forms.Form):
    names = get_employee_names(<<dynamic username goes here>>)
    manager = forms.ChoiceField(choices=names, widget=forms.RadioSelect)
类管理器窗体(forms.Form):
姓名=获取员工姓名()
manager=forms.ChoiceField(选项=名称,小部件=forms.RadioSelect)

预期的结果是将用户名作为字符串作为参数传递到函数中。

表单本身无法访问
请求
对象,因此无法识别当前登录的用户。您的视图应改为传递当前用户用户名:

views.py:

def索引(请求):
# ...
表单=管理表单(request.POST或None,当前用户\用户名=request.user.username)
# ...
forms.py:

def get_employee_names(username):
    # assuming it constructs correct choices tuples, like:
    # choices = ((username, username), ('noname', 'noname'))
    return choices

class ManagerForm(forms.Form):
    manager = forms.ChoiceField(choices=[], widget=forms.RadioSelect)

    def __init__(self, *args, **kwargs):
        username = kwargs.pop('current_user_username')
        super().__init__(*args, **kwargs)
        self.fields['manager'].choices = get_employee_names(username)

.

names=get_employee_names(self.username)name错误:未定义名称“self”
代码中的顺序并不重要。试试这个-我们在init中调用
get\u employee\u names
,因为在那里我们应该首先调用它。同样的事情<代码>名称错误:未定义名称“self”。在
choices=self.names
中,是的,对不起,刚刚醒来-这里有一个100%正确的答案你不知道我在这方面工作了多长时间,而且在某些方面非常接近。只是没有意识到,
choices
需要是一个空列表,并且在初始化期间传递了
get\u employee\u name
。有一件事我还不完全理解,*args和**kwargs是如何工作的,但我会马上去看一些视频。我现在非常高兴。非常感谢你!这里有去DM的路吗?如果我陷入困境,我想看看能否直接付钱给你帮助。