我们正在使用Django Admin来维护一些导出到我们网站的数据。有时,当点击标准更改列表视图以获取模型编辑表单而不是路由到正确的页面时,我们将获得Django 404页面/模板。
发生了一些有点不合时宜的事情,我们可以通过重新加载三次来重现它:
但最近它经常回归404。当我们反弹apache(优雅地)并且随着更多请求变得更糟(似乎再次)时,它似乎降低了返回404的几率。
在Fast-CGI / MySQL 5.1.x上运行Django 1.2.1
FWIW,我无法在我的VM上重现问题,但是我在那里运行mod_wsgi并在设置中设置了Debug = True。否则代码和数据库是相同的。
答案 0 :(得分:4)
我有同样的问题。对我而言,解决方案是将我的来电移至admin.site.register()
至admin.py
。如果将DEBUG设置为false,则会延迟加载模型,因此不会始终进行注册调用。显然,admin.py
总是在初始时加载。
答案 1 :(得分:1)
我修改了ModuleAdmin类的文件/path/to/django/contrib/admin/options.py get_object()方法。 注意:我使用Django 1.3.1
某种程度上,django在查询集中找不到具有pk object_id的对象。所以我修改了这样:
def get_object(self, request, object_id):
....
queryset = self.queryset(request)
model = queryset.model
obj = None
#first search the object with original way
try:
object_id = model._meta.pk.to_python(object_id)
obj = queryset.get(pk=object_id)
except:
#print "DEBUG: > first try does not exist (%s)" % str(object_id)
obj = None
if obj is None:
#if object doesn't exist in queryset, search in db
try:
object_id = model._meta.pk.to_python(object_id)
obj = model.objects.get(pk=object_id)
#print "DEBUG: > second try found %s" % str(obj)
except (model.DoesNotExist, ValidationError):
#print "DEBUG: > second try does not exist"
obj = None
return obj
我知道在django的来源中更改某些内容并不是一件好事,所以请自担风险使用!
答案 2 :(得分:0)