在视图中执行的Django查询返回旧数据

时间:2011-05-10 20:02:24

标签: mysql django django-wsgi

我有一个查询模型来填充表单的视图:

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视图(上面)会返回旧的结果集,缺少新添加的条目。

我必须重新启动网络服务器才能显示更改,这样看起来似乎是在某处缓存了查询。

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

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


版本:

  • MySQLdb:1.2.2
  • django:1.2.5
  • python:2.6

1 个答案:

答案 0 :(得分:3)

定义表单时评估

hwChoices - 即进程开始时。

请使用表单__init__方法进行计算。