我有一个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服务器,它将只获取新的数据集。
我认为可能需要清除一些缓存?感谢任何建议。 感谢
答案 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)