Django 1.5 Admin - запрос на сопоставление объектов не существует - прерывистый
Версия Python 2.7.3 Django - 1.5
Я использую стандартный Django Admin DefaultModelAdmin для добавления и изменения объектов.
проблема
Когда я добавляю объект с помощью Django Admin Add View - примерно один из каждых десяти раз - я получаю эту ошибку:
Object matching query does not exist> Lookup parameters were {'objectid_exact':234}
Вместо этого Django должен просто вернуться к представлению с разбивкой по страницам, где можно увидеть все объекты, но, похоже, он не может найти вновь созданный объект.
Примечание. У меня включена функция DEBUG, в противном случае я вижу стандартную ошибку 500 страниц. Строка кода, на которую он жалуется, находится в моем классе models.py: From models.py:
return "MyObject: %s: %s (by: %s)" % (self.pk, self.title, self.namelc)
Дело в том, что если я обновлю Django Admin, объект будет добавлен, и с ним проблем не будет.
Я провел некоторое исследование вокруг этого и нашел несколько статей и опробовал рекомендации - но они не имели никакого значения - например:
Наконец - я добавил эту строку кода в конец метода svae_model(), и это решило проблему:
my_list = list(models.MyObject.objects.all())
Я не уверен, почему это решает проблему - это заставляет Django пересмотреть QuerySet в соответствии с этими статьями:
- Джанго ленивый QuerySet и нумерация страниц
- https://docs.djangoproject.com/en/1.5/ref/models/querysets/
Это не влияет на производительность, и пока я не видел проблему снова.
Я не совсем понимаю, почему это решает проблему, поэтому я был бы благодарен за любые идеи относительно:
- Почему этот обходной путь, кажется, решает проблему?
- Любые идеи относительно причины проблемы в первую очередь?
Я использую @action.commit_on_success в методе, который добавляет элемент в БД, но, как я уже сказал, я думаю, что проблема заключается в том, что Django пытается отобразить разбитый на страницы список List - он не может найти вновь созданный объект.
Заранее спасибо за любую помощь - высоко ценится!