1

就像答案一样,我想在选择字段中动态加载数据库,我已经这样做了

queue = forms.ChoiceField(label=u'queue',choices=((x.que,x.disr) for x in Queue.objects.all()))

但它不起作用,我必须重新启动服务器,才能更新该字段。

4

2 回答 2

3

您需要调用__init__以动态加载表单中的数据。例如:

class YourForm(forms.Form):
   queue = forms.ChoiceField(label=u'queue')
   def __init__(self, *args, **kwargs):
       super(YourForm, self).__init__(*args, **kwargs)
       self.fields['queue'].choices = ((x.que,x.disr) for x in Queue.objects.all()))

这样做的原因是,如果您__init__在表单中调用,它会初始化一个类的实例并使用数据库中的最新数据更新选择列表。详细了解请看这里:为什么我们在python类中使用__init__?

于 2015-01-12T07:34:28.883 回答
1

使用ModelChoiceField而不是ChoiceField

于 2015-01-12T03:33:18.100 回答