Skip to content

Commit 0b63e39

Browse files
committedSep 17, 2018
修改在详情页删除数据报的错误
1 parent 0751cd9 commit 0b63e39

File tree

1 file changed

+14
-2
lines changed

1 file changed

+14
-2
lines changed
 

‎xadmin/views/delete.py

+14-2
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
from django.db import transaction, router
33
from django.http import Http404, HttpResponseRedirect
44
from django.template.response import TemplateResponse
5+
from django import VERSION as django_version
56
from django.utils import six
67
from django.utils.encoding import force_text
78
from django.utils.html import escape
@@ -17,6 +18,13 @@
1718
class DeleteAdminView(ModelAdminView):
1819
delete_confirmation_template = None
1920

21+
def __init__(self, request, *args, **kwargs):
22+
if django_version > (2, 0):
23+
for model in self.admin_site._registry:
24+
if not hasattr(self.admin_site._registry[model], 'has_delete_permission'):
25+
setattr(self.admin_site._registry[model], 'has_delete_permission', self.has_delete_permission)
26+
super(DeleteAdminView, self).__init__(request, *args, **kwargs)
27+
2028
def init_request(self, object_id, *args, **kwargs):
2129
"The 'delete' admin view for this model."
2230
self.obj = self.get_object(unquote(object_id))
@@ -31,8 +39,12 @@ def init_request(self, object_id, *args, **kwargs):
3139

3240
# Populate deleted_objects, a data structure of all related objects that
3341
# will also be deleted.
34-
(self.deleted_objects, model_count, self.perms_needed, self.protected) = get_deleted_objects(
35-
[self.obj], self.opts, self.request.user, self.admin_site, using)
42+
if django_version > (2, 0):
43+
(self.deleted_objects, model_count, self.perms_needed, self.protected) = get_deleted_objects(
44+
[self.obj], self.opts, self.admin_site)
45+
else:
46+
(self.deleted_objects, model_count, self.perms_needed, self.protected) = get_deleted_objects(
47+
[self.obj], self.opts, self.request.user, self.admin_site, using)
3648

3749
@csrf_protect_m
3850
@filter_hook

1 commit comments

Comments
 (1)

liuyuyefz commented on Sep 24, 2018

@liuyuyefz

好好检查一下这段代码
```
(self.deleted_objects, model_count, self.perms_needed, self.protected) = get_deleted_objects(
[self.obj], self.opts, self.request.user, self.admin_site, using)
if django_version > (2, 0):
(self.deleted_objects, model_count, self.perms_needed, self.protected) = get_deleted_objects(
[self.obj], self.opts, self.admin_site)
else:
(self.deleted_objects, model_count, self.perms_needed, self.protected) = get_deleted_objects(
[self.obj], self.opts, self.request.user, self.admin_site, using)

Please sign in to comment.