У меня есть представление, которое запрашивает модель для заполнения формы:
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 выполняются с использованием интерфейса администратора.Изменения немедленно отображаются в интерфейсе администратора, как и ожидалось.
Выполнение запроса через оболочку возвращает все результаты, как и ожидалось:
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