【问题标题】:Django: provide choices list to a checkbox from a view functionDjango:从视图功能为复选框提供选择列表
【发布时间】:2010-12-17 00:54:01
【问题描述】:

在我的 Django 应用程序中,我有一个带有 ChoiceField 的表单,通常允许在一系列整数值之间进行选择。

class FormNumber(forms.Form):
list=[]
for i in range(1, 11):
    list.append((i,i))
number=forms.ChoiceField(choices=list, initial=1)

现在我需要在某些情况下覆盖视图方法中的默认选择列表,使用较小的范围,但尝试以这种方式进行

n=10-len(request.session["items"])
    if n>0:
        list=[]
        for i in range(1, n+1):
            list.append((i,i))
        form=FormNumber(choices={'number':list}, initial={'number':1})

我得到一个 TypeError - __ init__() 得到了一个意外的关键字参数“选择”。我也尝试从表单类中删除参数,但得到相同的结果。

有没有办法以类似于上面的方式从视图中使用新的选择列表来初始化 ChoiceField? 在此先感谢:)

【问题讨论】:

    标签: django django-forms django-views choicefield


    【解决方案1】:

    我把代码贴出来,也许以后有人需要解决类似的问题。

    现在的表单代码是这个:

    class FormNumber(forms.Form): 
        def __init__(self, list=None, *args, **kwargs):
            super(FormNumber, self).__init__(*args, **kwargs)
            self.fields["number"]=forms.ChoiceField(choices=list)
    

    我只是用

    从视图中调用它
    form=FormNumber(list=number_list) 
    

    【讨论】:

      【解决方案2】:

      我会在表单类FormNumber 中添加一个__init__(choices=None) 函数并使用它初始化ChoiceField number,除非它是None
      如果未提供choices(默认为None),初始化将执行默认操作。

      【讨论】:

      • 感谢您的回复,我正在尝试这样解决,看看会发生什么
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-10-23
      • 1970-01-01
      • 2013-07-18
      • 2019-07-01
      • 2011-04-11
      • 1970-01-01
      相关资源
      最近更新 更多