直到上週我都有同樣的問題。在我追蹤這個錯誤幾個月後,我發現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