在我的django项目中,我有一个带有数据库选项下拉列表的表单。服务器启动时,所有选项都存在,但是如果在运行时添加了一个选项,则新选项不会显示在下拉列表中。
forms.py
class filter(forms.Form):
filterOption=forms.CharField(widget=forms.Select(choices=getOptions())
functions.getOptions()从mySQL返回一个选项列表(这里不是数据库的问题)。 然后将其呈现在views.py中,并放入html表单中。
from .forms import filter
def index(request):
filter = filter()
return render(request, 'homePage/home.html',{'filter':filter})
我知道在服务器启动时会创建表单对象,但是如果添加了一个新选项并且getOptions()应该再返回一个选项,那么如何在不重新启动服务器的情况下重新初始化该表单对象。有时它是在〜10分钟后添加的,但我立即需要它。
答案 0 :(得分:0)
您可以将addPic = () => {
document.getElementById('takePic').click()
}
与可调用对象一起使用:
ChoiceField
答案 1 :(得分:0)
好吧,如果您想在浏览器中重新加载表单html页面后显示新的复选框可能性,它应该立即存在。
您是否真的在数据库中查看过此选项已成功添加?
您是否有某种自定义的活动缓存处于活动状态?
如果要在不重新加载页面的情况下显示新的复选框选项,则需要实现一个非常复杂的自定义表单渲染,该渲染通过AJAX请求每X秒重新加载一次表单。
答案 2 :(得分:0)
通过以下方法解决了该问题:https://modwsgi.readthedocs.io/en/develop/user-guides/reloading-source-code.html
我基本上取消了进程,并在每次添加新值时重新加载该进程。
set
在链接的文档中说“触摸”-wsgi.py文件应该重新加载它。而且确实如此,但只有在您手动进行时,如果使用os.system('touch ... / wsgi.py'),则不会。为了重新加载代码,我必须终止该过程。