我已经在forms.py
中创建了一个表单,该表单基于数据库中的对象使用选择输入:
from controls.models import Valve
class CronjobForm(forms.Form):
query = Valve.objects.all()
VALVE_CHOICES = [
(valve.pk, valve.name) for valve in query
]
valves = forms.ChoiceField(required=True, widget=forms.Select, choices=VALVE_CHOICES)
起初,一切似乎都工作正常,呈现了HTML的<select>
和option
。
问题是,当我使用Django Admin界面向数据库添加新的Valve
对象时,ChoiceField
字段需要一段时间才能更新-我看不到立即在前端添加新选项。我试图重新加载页面,强制重新加载,甚至将查询输出到终端-变量query
立即得到更新,只是HTML没有更新。
可能要经过一分钟,一分钟左右的时间才进行更新,这可能要归功于系统检查或重复执行runserver
命令。
所以我想知道,我想念什么?有什么方法可以强制更新表格?表单是否被缓存,这是导致问题的原因?
答案 0 :(得分:2)
答案 1 :(得分:0)
我们还可以传递函数的引用,该函数将返回数组供选择,如the choices' description of django docs中所述。
我也遇到了同样的问题,这样解决了。
def get_valve_choices():
return [
(valve.pk, valve.name) for valve in Valve.objects.all()
]
class CronjobForm(forms.Form):
valves = forms.ChoiceField(required=True, widget=forms.Select, choices=get_valve_choices)