Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/20.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 DJANGO注入multipleEchoIceField初始值时出现问题_Python_Django_Django Forms_Multiplechoicefield - Fatal编程技术网

Python DJANGO注入multipleEchoIceField初始值时出现问题

Python DJANGO注入multipleEchoIceField初始值时出现问题,python,django,django-forms,multiplechoicefield,Python,Django,Django Forms,Multiplechoicefield,我有一个表单,单击表中的“信息”按钮,我获取用户信息并注入表单,所有这些都可以,但不适用于多回音字段: data = {'name': name_surname[0], 'surname': name_surname[1], 'c02': retrieved.c02, 'dep': retrieved.dept_no, 'job': retrieved.job_code, 'location': retrieved.c03, 'fbd_role': retriev

我有一个表单,单击表中的“信息”按钮,我获取用户信息并注入表单,所有这些都可以,但不适用于多回音字段

data = {'name': name_surname[0], 'surname': name_surname[1], 'c02': retrieved.c02, 'dep': retrieved.dept_no,
                'job': retrieved.job_code, 'location': retrieved.c03, 'fbd_role': retrieved.c04, 'team_id': TEAM_ID_RETRIEVED} 
        form = RegForm(initial=data)
        form.set_readonly()    
        return render(request, insert_form_address,
                      {'form': form, 'action': 'info', 'pk': pk, 'profiles': profile_list})
这是我的视图代码,我用来用用户值填充表单,每个字段都用初始值正确赋值,但不是最后一个,team_id

填写团队id字段的数据示例如下(这是表单中声明的默认列表):

让我们假设我只想用一些值来初始化它,这些值与该用户相关(这个列表已经被传递到init模式,它不起作用,它仍然使用默认列表..)

表格如下:

TEAM_ID = {('POCM_A09', 'POCM_A09'),
           ('POCM_A11', 'POCM_A11'),
           ('POCM_A13', 'POCM_A13'),
           ('POCM_A15', 'POCM_A15'),
           ('POCM_A16', 'POCM_A16'),
           ('POCM_A18', 'POCM_A18')}
class RegForm(forms.Form):
    name = forms.CharField(label='Name', max_length=100)
    surname = forms.CharField(label='Surname', max_length=100)
    c02 = forms.CharField(label='AD ID', max_length=100)
    dep = CustomModelChoiceField(label='Department', queryset=Department.objects.all())
    fbd_role = forms.ChoiceField(label='FBD Role', choices=FBD_ROLES, initial=None)
    location = forms.ChoiceField(label='Location', choices=LOCATION, initial=None)
    job = forms.ChoiceField(label='Job', choices=JOBS)
    ## Unable to pass a initial value for this field..
    team_id= forms.MultipleChoiceField(label='Team', choices=TEAM_ID)


    action = None
    user_id = None

    def __init__(self, *args, **kwargs):
        self.user_id = kwargs.pop('pk', None)
        self.action = kwargs.pop('action', None)
        super(RegForm, self).__init__(*args, **kwargs)

    def set_readonly(self):
        for field in self.fields:
            self.fields[field].required = False
            self.fields[field].widget.attrs['disabled'] = 'disabled'
任何想法,我想都应该是很容易解决的。。。但我不明白问题出在哪里

对于Tiny:

它总是表现出来


谢谢!:)

您只需设置值,如:

initial = {
   ...
   "team_id": ['POCM_A09', ...] # list of all the values selected
   ...
}
根据我们的聊天讨论,我正在更新答案

您可以覆盖表单
\uuuu init\uuuu()
方法中的“MultipleChoiceField”选项。首先将您的
新选项
传递给表单,然后:

def __init__(self, *args, **kwargs): 
    new_choices = kwargs.pop('new_choices', None)
    super(FORM_NAME, self).__init__(*args, **kwargs) 
    ...
    self.fields['team_id'].choices = new_choices
    ...

您只需设置值,如:

initial = {
   ...
   "team_id": ['POCM_A09', ...] # list of all the values selected
   ...
}
根据我们的聊天讨论,我正在更新答案

您可以覆盖表单
\uuuu init\uuuu()
方法中的“MultipleChoiceField”选项。首先将您的
新选项
传递给表单,然后:

def __init__(self, *args, **kwargs): 
    new_choices = kwargs.pop('new_choices', None)
    super(FORM_NAME, self).__init__(*args, **kwargs) 
    ...
    self.fields['team_id'].choices = new_choices
    ...

更新为列表。你的有一些花括号,为什么?你只需要初始化的值,不需要显示名称。我不明白。。。你的辛塔克斯不适合我。。。我的适用于所有其他值…抱歉语法,我刚刚修复了它。保持一切原样,但试着用
'team\u id':['POCM\u A09',]
更改
'team\u id':['POCM\u A09',]
。因为在你最初的问题中,这个
TEAM_ID_RETRIEVED={('POCM_A09','POCM_A09')}
行我认为是错误的。让我们更新为一个列表。你的有一些花括号,为什么?你只需要初始化的值,不需要显示名称。我不明白。。。你的辛塔克斯不适合我。。。我的适用于所有其他值…抱歉语法,我刚刚修复了它。保持一切原样,但试着用
'team\u id':['POCM\u A09',]
更改
'team\u id':['POCM\u A09',]
。因为在你最初的问题中,这个
TEAM_ID_RETRIEVED={('POCM_A09','POCM_A09')}
行我认为是错误的。让我们来看看。