如何使用从动态查询初始化的选择列表创建django表单?

时间:2010-11-15 22:59:34

标签: django forms django-forms

我正在尝试构建一个表单,其中可以从创建表单对象时传入的元组参数初始化选择列表。

我尝试了以下操作,这对于创建表单非常有用。但是当我尝试提交表单时,我得到一个is_valid()= false错误。在下面的示例中,myrooms变量是我想在表单初始化时动态加载的数据。这里有什么帮助?

class SessionInfoForm(forms.ModelForm):

     def __init__(self, myrooms = None, *args, **kwargs):
         super(SessionInfoForm, self).__init__(*args, **kwargs)
         if myrooms != None:
             self.fields['room'].choices = myrooms

     class Meta:
         model = SessionInfo
         fields = ["title", "room", "viewer_limit", "starttime", "endtime", "billing_type", "billing_value"]

2 个答案:

答案 0 :(得分:1)

在验证结果时,您可能忘记将相同的列表传递给myrooms

您必须将两者传递给渲染和验证。

答案 1 :(得分:0)

只需将self.fields['room'].choices = myrooms更改为self.fields['room'].widget.choices = myrooms,我已将其编辑到您的问题中