MCPcopy
hub / github.com/django/django / _delete_view

Method _delete_view

django/contrib/admin/options.py:2487–2552  ·  view source on GitHub ↗

The 'delete' admin view for this model.

(self, request, object_id, extra_context)

Source from the content-addressed store, hash-verified

2485 return self._delete_view(request, object_id, extra_context)
2486
2487 def _delete_view(self, request, object_id, extra_context):
2488 "The 'delete' admin view for this model."
2489 app_label = self.opts.app_label
2490
2491 to_field = request.POST.get(TO_FIELD_VAR, request.GET.get(TO_FIELD_VAR))
2492 if to_field and not self.to_field_allowed(request, to_field):
2493 raise DisallowedModelAdminToField(
2494 "The field %s cannot be referenced." % to_field
2495 )
2496
2497 obj = self.get_object(request, unquote(object_id), to_field)
2498
2499 if not self.has_delete_permission(request, obj):
2500 raise PermissionDenied
2501
2502 if obj is None:
2503 return self._get_obj_does_not_exist_redirect(request, self.opts, object_id)
2504
2505 # Populate deleted_objects, a data structure of all related objects
2506 # that will also be deleted.
2507 (
2508 deleted_objects,
2509 model_count,
2510 perms_needed,
2511 protected,
2512 ) = self.get_deleted_objects([obj], request)
2513
2514 if request.POST and not protected: # The user has confirmed the deletion.
2515 if perms_needed:
2516 raise PermissionDenied
2517 obj_display = str(obj)
2518 attr = str(to_field) if to_field else self.opts.pk.attname
2519 obj_id = obj.serializable_value(attr)
2520 self.log_deletions(request, [obj])
2521 self.delete_model(request, obj)
2522
2523 return self.response_delete(request, obj_display, obj_id)
2524
2525 object_name = str(self.opts.verbose_name)
2526
2527 if perms_needed or protected:
2528 title = _("Cannot delete %(name)s") % {"name": object_name}
2529 else:
2530 title = _("Delete")
2531
2532 context = {
2533 **self.admin_site.each_context(request),
2534 "title": title,
2535 "subtitle": None,
2536 "object_name": object_name,
2537 "object": obj,
2538 "escaped_object": display_for_value(str(obj), EMPTY_VALUE_STRING),
2539 "deleted_objects": deleted_objects,
2540 "delete_confirmation_max_display": self.delete_confirmation_max_display,
2541 "model_count": dict(model_count).items(),
2542 "perms_lacking": perms_needed,
2543 "protected": protected,
2544 "opts": self.opts,

Callers 1

delete_viewMethod · 0.95

Calls 15

get_objectMethod · 0.95
get_deleted_objectsMethod · 0.95
log_deletionsMethod · 0.95
delete_modelMethod · 0.95
response_deleteMethod · 0.95
get_preserved_filtersMethod · 0.95
render_delete_formMethod · 0.95
unquoteFunction · 0.90
display_for_valueFunction · 0.90
to_field_allowedMethod · 0.80

Tested by

no test coverage detected