我知道这不是最佳实践(我猜缓存是更好的方法)但我在代码中看到Django模型值在django_app/shared.py
中保存为全局变量:
VALS = MyModel.objects.values_list('id', flat=True)
CHOICES = [(x,x) for x in VALS]
在django/forms.py
from shared import CHOICES
class MyForm(forms.Form):
choice = forms.MultipleChoiceField(CHOICES, default='')
...
在django/views.py
:
def my_view(request):
....
form = MyForm(request.GET)
....
我在nginx后面使用wsgi运行应用程序。现在,问题我看到,即使我在模型中进行了更改,但未在视图中的表单中反映出来。选项始终保持不变。它是否被缓存,因为uwsgi进程会产生多个请求。我无法得到它。请帮忙。
更新:正如所料,它原来是nginx。我重新启动了nginx并且反映了更改。现在,因为没有nginx重新启动它没有更新,所以它是否意味着它可以永远保持这样?我的理解是,一旦创建了新的uwsgi进程,CHOICES就会得到更新。顺便说一句,我们使用uwsgi conf文件进行配置。
提前致谢!
答案 0 :(得分:1)
您可以使用ModelChoiceField
。
class MyForm(forms.Form):
choice = forms.ModelChoiceField(queryset=MyModel.objects.all())
...
这将在模板中产生以下内容:
<select id="id_field" name="field">
<option value="obj1.id">Object1</option>
<option value="obj2.id">Object2</option>
...
</select>
答案 1 :(得分:0)
重新启动wsgi服务器(Nginx)。那应该解决问题。