【问题标题】:same form, different variables. how to implement?相同的形式,不同的变量。如何实施?
【发布时间】:2023-04-08 19:21:01
【问题描述】:

我有一个表格,其中一个字段是类别:体育、电影、书籍等
我有另一个表,其中包含子类别,例如运动分为芭蕾舞、足球、高尔夫等。

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

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

输出:

运动:
o 足球
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'))

但我不确定如何区分它们,也许使用表单集这会起作用,但不知道如何

任何帮助或建议将不胜感激!
谢谢

【问题讨论】:

  • 你需要两个选择:一个有 [Sport, Movies] 选择,第二个根据第一个的值改变它的选择,对吧?
  • 正确,我需要两个选择但不同。如果您有更多疑问,请让我更新我的问题并提供更多详细信息..
  • 希望它更容易解释,基本上我想要两个选择(可能或多或少),一个用于运动,另一个用于电影

标签: django django-forms


【解决方案1】:

其实比我预想的要容易:)

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

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)

【讨论】:

    猜你喜欢
    • 2018-06-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多