相同的形式,不同的变量。怎么实现?

时间:2011-05-25 10:50:54

标签: django django-forms

我有一张桌子,其中一个字段是类别:体育,电影,书籍等 我有另一个带有子类别的表,例如运动分为芭蕾舞,futebol,高尔夫等,等等。

假设我有一个包含两个变量的列表:['Sport','Movies']
(这些变量来自一个文件。我正在上传文件,每次该类别有多个子选项时,我想在类别中显示带有选项的选项。)

例如,用户插入了运动和电影。我想为列表中的每个字段显示一个选择选项。但子选项不一样,这取决于所选的类别。

输出:

运动:
  o Futebol
  o芭蕾舞团   o高尔夫

影:
  o戏剧
  o喜剧

forms.py

class OptionsForm(forms.Form):
def __init__(self, numb, *args, **kwargs):
    super(OptionsForm, self).__init__(*args, **kwargs)
    self.fields['num'] = forms.ChoiceField(widget=RadioSelect(), choices=
        numb, label="", required=True)

我正在传递一个包含所有子选项的元组:

numb = (('ballet', 'ballet'),
       ('futebol', 'futebol'),
       ('golf', 'golf'),  
       ('drama', 'drama'),
       ('comedy', 'comedy'))

但是我不确定如何区分它们,也许这些表格可行,但不确定如何

任何帮助或建议都会受到赞赏! 感谢

1 个答案:

答案 0 :(得分:0)

实际上它比我预期的要容易得多:)

我只需要传递一个元组字典:

dic = { 'Sport': [('ballet', 'ballet'), ('futebol', 'futebol'), ('golf'), ('golf')],
        'Movies': [('drama', 'drama'), ('comedy', 'comedy')] }

并更改表格:

class CategoriesForm(forms.Form):
    def __init__(self, numb, *args, **kwargs):
        super(CtaegoriesForm, self).__init__(*args, **kwargs)
        for p, i in numb.items():
            self.fields[p] = forms.ChoiceField(widget=RadioSelect(), choices=i,
                required=True)