Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/jsf/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 为什么列表在这个类中不被接受为参数?_Python_Django - Fatal编程技术网

Python 为什么列表在这个类中不被接受为参数?

Python 为什么列表在这个类中不被接受为参数?,python,django,Python,Django,我有一个类需要一个列表作为参数。问题是,当我导入此函数并将其用作参数时,我会得到一个TypeError或ValueError 我已尝试搜索此问题,但似乎找不到匹配的问题 出现问题的代码: from payroll.payroll import get_employee_names class ManagerForm(forms.Form): names = forms.ChoiceField(choices=[get_employee_names()]) 导入的函数: def get

我有一个类需要一个列表作为参数。问题是,当我导入此函数并将其用作参数时,我会得到一个
TypeError
ValueError

我已尝试搜索此问题,但似乎找不到匹配的问题

出现问题的代码:

from payroll.payroll import get_employee_names

class ManagerForm(forms.Form):
    names = forms.ChoiceField(choices=[get_employee_names()])
导入的函数:

def get_employee_names():
    # place uploaded files into variables
    tips_file = 'media/reports/Tips_By_Employee_Report.xls'

    # get managers name
    df_employee_names = pd.read_excel(
        tips_file, sheet_name=0, header=None, skiprows=7)
    df_employee_names.rename(
        columns={0: 'Employee'}, inplace=True)
    df_employee_names['Employee'] = \
        df_employee_names['Employee'].str.lower()
    # data-frame to list
    employee_names = df_employee_names.loc[:, 'Employee'].tolist()
    return employee_names
我希望它使用函数末尾返回的列表来创建下拉菜单

我目前遇到的主要错误是:
ValueError at/select manager run payroll/要解包的值太多(预期为2)

编辑:发现它需要一个元组作为参数。

ChoiceField
参数应该接收元组列表,而不是列表的1元素列表

重写
获取员工姓名
以提供:

def get_employee_names():
# ...
#期望员工的名字类似于['a','b','c']
返回[(姓名,姓名)作为员工姓名]
以您的形式:

类管理器窗体(forms.Form):
name=forms.ChoiceField(choices=get\u employee\u names())

选项
应该是2元组的iterable或返回这样一个iterable的callable。非常感谢。标题已更新以反映这一点。