Django MultipleChoice条目未刷新

时间:2011-05-10 03:00:51

标签: django django-views

我有一个selectmultiple选择小部件,它从mysql数据库获取数据并显示给用户。

 list = [(x.pk, x.parameter) for x in Parameter.objects.all()]
 parameters = forms.CharField(label=("Available parameters"),widget=forms.SelectMultiple(choices=list)

例如,目前在选择中会显示[A,B,C]。

如果我直接从数据库中删除'B',我应该只能在selectmultiple小部件中看到[A,C](最初我以为会有重新加载并再次从数据库中获取数据),但这不是似乎是这样,它仍然会显示[A,B,C]。我希望selectmultiplet小部件在运行时实际显示当前数据库,或者至少刷新(F5)页面{似乎也不刷新小部件}。如果我重新启动Web服务器,它将只获取新的数据集。

我认为可能需要清除一些缓存?感谢任何建议。 感谢

1 个答案:

答案 0 :(得分:1)

您需要将代码放在表单的 init 方法中,或者在表单创建时将选项传递给表单:

def SomeForm(forms.Form):
    def __init__(self, *args, **kwargs):
        choices = [(x.pk, x.parameter) for x in Parameter.objects.all()]
        self.fields['parameters'] = forms.CharField(label="Available parameters", widget=forms.SelectMultiple(choices=choices)