我有一个表单,其中包含一个变量,该变量调用一个函数来获取名称列表。我需要将当前登录的用户作为动态参数变量传递给该函数。
为此,我花了大约2天的时间来尝试所有可行的解决方案。找不到任何有效的方法。我试图初始化一个请求对象,但无法使其正常工作。
class ManagerForm(forms.Form):
names = get_employee_names(<<dynamic username goes here>>)
manager = forms.ChoiceField(choices=names, widget=forms.RadioSelect)
预期结果是将用户名作为字符串传递给函数作为参数。
答案 0 :(得分:1)
表单本身无权访问request
对象,因此无法识别当前登录的用户。您的视图应改为传递当前用户的用户名:
views.py:
def index(request):
# ...
form = ManagerForm(request.POST or None, current_user_username=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)