gpt4 book ai didi

mysql - 在 View 中执行的 Django 查询返回旧数据

转载 作者:可可西里 更新时间:2023-11-01 08:21:51 25 4
gpt4 key购买 nike

我有一个查询模型以填充表单的 View :

class AddServerForm(forms.Form):
…snip…
# Compile and present choices for HARDWARE CONFIG
hwChoices = HardwareConfig.objects.\
values_list('name','description').order_by('name')
hwChoices = [('', '----- SELECT ONE -----')] +\
[ (x,'{0} - {1}'.format(x,y)) for x,y in hwChoices ]

hwconfig = forms.ChoiceField(label='Hardware Config', choices=hwChoices)
…snip…

def addServers(request, template="manager/add_servers.html",
template_success="manager/add_servers_success.html"):
if request.method == 'POST':
# …snip… - process the form
else:
# Page was called via GET - use a default form
addForm = AddServerForm()

return render_to_response(template, dict(addForm=addForm),
context_instance=RequestContext(request))

HardwareConfig 模型的添加是使用管理界面完成的。更改会按预期立即显示在管理界面中。

通过 shell 运行查询会按预期返回所有结果:

michael@victory> python manage.py shell
Python 2.6 (r26:66714, Feb 21 2009, 02:16:04)
[GCC 4.3.2 [gcc-4_3-branch revision 141291]] on linux2
Type "help", "copyright", "credits" or "license" for more information.
(InteractiveConsole)
>>> from serverbuild.base.models import HardwareConfig
>>> hwChoices = HardwareConfig.objects.\
... values_list('name','description').order_by('name')

hwChoices 现在包含完整的结果集。

但是,加载 addServers View (上图)会返回旧结果集,缺少新添加的条目。

我必须重新启动网络服务器才能显示更改,这使得该查询看起来好像被缓存在某处。

  • 我没有在任何地方进行任何显式缓存(grep -ri cache/project/root 不返回任何内容)
  • 这不是浏览器缓存页面 - 通过 chrome 工具检查,也尝试使用不同的用户和计算机

出了什么问题,我该如何解决?


版本:

  • MySQL数据库:1.2.2
  • Django :1.2.5
  • python :2.6

最佳答案

hwChoices 在定义表单时进行评估 - 即在流程开始时。

改为在表单的 __init__ 方法中进行计算。

关于mysql - 在 View 中执行的 Django 查询返回旧数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5955769/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com