Determine the HttpResponse for the change_view stage.
(self, request, obj)
| 1680 | return self.response_post_save_add(request, obj) |
| 1681 | |
| 1682 | def response_change(self, request, obj): |
| 1683 | """ |
| 1684 | Determine the HttpResponse for the change_view stage. |
| 1685 | """ |
| 1686 | |
| 1687 | if IS_POPUP_VAR in request.POST: |
| 1688 | opts = obj._meta |
| 1689 | to_field = request.POST.get(TO_FIELD_VAR) |
| 1690 | attr = str(to_field) if to_field else opts.pk.attname |
| 1691 | value = request.resolver_match.kwargs["object_id"] |
| 1692 | new_value = obj.serializable_value(attr) |
| 1693 | popup_response_data = json.dumps( |
| 1694 | { |
| 1695 | "action": "change", |
| 1696 | "value": str(value), |
| 1697 | "obj": str(obj), |
| 1698 | "new_value": str(new_value), |
| 1699 | } |
| 1700 | ) |
| 1701 | return TemplateResponse( |
| 1702 | request, |
| 1703 | self.popup_response_template |
| 1704 | or [ |
| 1705 | "admin/%s/%s/popup_response.html" |
| 1706 | % (opts.app_label, opts.model_name), |
| 1707 | "admin/%s/popup_response.html" % opts.app_label, |
| 1708 | "admin/popup_response.html", |
| 1709 | ], |
| 1710 | { |
| 1711 | "popup_response_data": popup_response_data, |
| 1712 | }, |
| 1713 | ) |
| 1714 | |
| 1715 | opts = self.opts |
| 1716 | preserved_filters = self.get_preserved_filters(request) |
| 1717 | preserved_qsl = self._get_preserved_qsl(request, preserved_filters) |
| 1718 | |
| 1719 | obj_display = display_for_value(str(obj), EMPTY_VALUE_STRING) |
| 1720 | msg_dict = { |
| 1721 | "name": opts.verbose_name, |
| 1722 | "obj": format_html( |
| 1723 | '<a href="{}">{}</a>', urlquote(request.path), obj_display |
| 1724 | ), |
| 1725 | } |
| 1726 | if "_continue" in request.POST: |
| 1727 | msg = format_html( |
| 1728 | _( |
| 1729 | "The {name} “{obj}” was changed successfully. You may edit it " |
| 1730 | "again below." |
| 1731 | ), |
| 1732 | **msg_dict, |
| 1733 | ) |
| 1734 | self.message_user(request, msg, messages.SUCCESS) |
| 1735 | redirect_url = request.path |
| 1736 | redirect_url = add_preserved_filters( |
| 1737 | { |
| 1738 | "preserved_filters": preserved_filters, |
| 1739 | "preserved_qsl": preserved_qsl, |
no test coverage detected