直到上周我都有同样的问题。在我追踪这个错误几个月后,我发现404在django源代码中提升。
我修改了ModuleAdmin类的/path/to/django/contrib/admin/options.py get_object()方法的文件。 注:我使用Django 1.3.1
不知何故django无法在queryset中找到包含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的源东西一件好事,所以在使用您自担风险!
你的admin.site.register()调用会在哪里?我已经在每个应用程序的admin.py中,但现在只能在带有apache的产品而不是manage.py runserver中获得此问题 – radtek 2015-01-01 19:43:00