我有一个字符串存储在数据库中
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))