将字符串转换为元组,用于表单的django选项。选择

时间:2015-07-15 15:55:09

标签: python django python-2.7

我有一个字符串存储在数据库中

yes:Yes, I agree;no:No, I do not agree

我正在尝试将其转换为以下可用作 mychoices 的内容:

widget=forms.Select(choices=mychoices)

如果我以这种方式硬连线,以下工作正常,但是这些值作为选项存储在数据库中的单个字段中(在我的控制之外)。

for f in fields:
    # mychoices = f.choices  
    mychoices = (('yes','Yes, I agree'),('no','No, I do not agree'))
    self.fields[f.name] = forms.CharField(label=f.name,
                                            help_text=f.description
                                            widget=forms.Select(choices=mychoices))

我尝试了一些分裂的变化;并且:但似乎找不到合适的方法来做到这一点。我得到的值是错误,需要多个值来解包,或者有太多的值要解包。

有超过2个选项的记录,但都采用以下格式:

code1:Text to display;code2:Text to display;code3:Text to display...

如何将 f.choices 变为上面的硬编码 mychoices

修改 是的,使用以下工作(感谢@MauroBaraldi - 仍然太新了,无法让你公开查看upvote,但它就在那里)

for f in fields:
    mychoices = tuple(tuple(c.split(':')) for c in f.choices.split(";"))  
    # mychoices = (('yes','Yes, I agree'),('no','No, I do not agree'))
    self.fields[f.name] = forms.CharField(label=f.name,
                                            help_text=f.description    
                                            widget=forms.Select(choices=mychoices))

1 个答案:

答案 0 :(得分:0)

您可以使用Django-model-utils