[Django] #26763: Control rendering of add/change/delete_related admin buttons

23 views
Skip to first unread message

Django

unread,
Jun 15, 2016, 12:39:35 PM6/15/16
to django-...@googlegroups.com
#26763: Control rendering of add/change/delete_related admin buttons
-------------------------------+--------------------
Reporter: chrisclark | Owner: nobody
Type: New feature | Status: new
Component: contrib.admin | Version: 1.9
Severity: Normal | Keywords:
Triage Stage: Unreviewed | Has patch: 1
Easy pickings: 1 | UI/UX: 1
-------------------------------+--------------------
In certain cases, displaying the add/change/delete icons on related fields
in the Django admin is undesirable, but this behavior can't currently be
overridden. The proposed change allows configuration of which buttons to
display by passing kwargs into formfield_for_db.

--
Ticket URL: <https://code.djangoproject.com/ticket/26763>
Django <https://code.djangoproject.com/>
The Web framework for perfectionists with deadlines.

Django

unread,
Jun 15, 2016, 12:40:51 PM6/15/16
to django-...@googlegroups.com
#26763: Control rendering of add/change/delete_related admin buttons
-------------------------------+--------------------------------------
Reporter: chrisclark | Owner: chrisclark
Type: New feature | Status: assigned
Component: contrib.admin | Version: 1.9
Severity: Normal | Resolution:
Keywords: | Triage Stage: Unreviewed
Has patch: 1 | Needs documentation: 1
Needs tests: 1 | Patch needs improvement: 0

Easy pickings: 1 | UI/UX: 1
-------------------------------+--------------------------------------
Changes (by chrisclark):

* status: new => assigned
* needs_better_patch: => 0
* needs_tests: => 1
* owner: nobody => chrisclark
* needs_docs: => 1


Old description:

> In certain cases, displaying the add/change/delete icons on related
> fields in the Django admin is undesirable, but this behavior can't
> currently be overridden. The proposed change allows configuration of
> which buttons to display by passing kwargs into formfield_for_db.

New description:

In certain cases, displaying the add/change/delete icons on related fields
in the Django admin is undesirable, but this behavior can't currently be
overridden. The proposed change allows configuration of which buttons to
display by passing kwargs into formfield_for_db.

https://github.com/django/django/pull/6785

--

--
Ticket URL: <https://code.djangoproject.com/ticket/26763#comment:1>

Django

unread,
Jun 15, 2016, 12:42:53 PM6/15/16
to django-...@googlegroups.com
#26763: Control rendering of add/change/delete_related admin buttons
-------------------------------+--------------------------------------
Reporter: chrisclark | Owner: chrisclark
Type: New feature | Status: assigned
Component: contrib.admin | Version: 1.9
Severity: Normal | Resolution:
Keywords: | Triage Stage: Unreviewed

Has patch: 1 | Needs documentation: 1
Needs tests: 1 | Patch needs improvement: 0
Easy pickings: 1 | UI/UX: 1
-------------------------------+--------------------------------------
Changes (by chrisclark):

* Attachment "Screen Shot 2016-06-15 at 9.42.18 AM.png" added.

Screenshot of feature in question

Django

unread,
Jun 15, 2016, 1:19:59 PM6/15/16
to django-...@googlegroups.com
#26763: Control rendering of add/change/delete_related admin buttons
-------------------------------+--------------------------------------
Reporter: chrisclark | Owner: chrisclark
Type: New feature | Status: assigned
Component: contrib.admin | Version: 1.9
Severity: Normal | Resolution:
Keywords: | Triage Stage: Unreviewed

Has patch: 1 | Needs documentation: 1
Needs tests: 1 | Patch needs improvement: 0
Easy pickings: 1 | UI/UX: 1
-------------------------------+--------------------------------------

Comment (by timgraham):

Could you add some specifics about the use case? I'll admit I'm a bit
fatigued about adding endless options in the admin to provide infinite
customization.

--
Ticket URL: <https://code.djangoproject.com/ticket/26763#comment:2>

Django

unread,
Jun 15, 2016, 2:02:28 PM6/15/16
to django-...@googlegroups.com
#26763: Control rendering of add/change/delete_related admin buttons
-------------------------------+--------------------------------------
Reporter: chrisclark | Owner: chrisclark
Type: New feature | Status: assigned
Component: contrib.admin | Version: 1.9
Severity: Normal | Resolution:
Keywords: | Triage Stage: Unreviewed

Has patch: 1 | Needs documentation: 1
Needs tests: 1 | Patch needs improvement: 0
Easy pickings: 1 | UI/UX: 1
-------------------------------+--------------------------------------
Changes (by chrisclark):

* Attachment "example.jpg" added.

Example of ambiguous UI

Django

unread,
Jun 15, 2016, 2:02:42 PM6/15/16
to django-...@googlegroups.com
#26763: Control rendering of add/change/delete_related admin buttons
-------------------------------+--------------------------------------
Reporter: chrisclark | Owner: chrisclark
Type: New feature | Status: assigned
Component: contrib.admin | Version: 1.9
Severity: Normal | Resolution:
Keywords: | Triage Stage: Unreviewed

Has patch: 1 | Needs documentation: 1
Needs tests: 1 | Patch needs improvement: 0
Easy pickings: 1 | UI/UX: 1
-------------------------------+--------------------------------------

Comment (by chrisclark):

For sure (and I hear you!). Essentially, the UI can be *incredibly*
confusing in certain circumstances so we need to disable it.

Here's a very concrete example:

I've attached a screen shot from our Django admin site. We're an ecommerce
company, and this is a customer's shipment with a "12% off" offer applied
to it (the last field in the screenshot).

For various reasons, sometimes we need to remove the "offer" from a
shipment. Our support reps get a call from a customer, go to the shipment
in the Django admin and are *supposed* to set the drop down to --empty--,
and save the shipment, in order to remove the offer.

Instead, a handful of times, reps have clicked the red X in order to
'remove' the offer from the shipment. A totally logical and reasonable
thing to do, given the UI. But, of course, that deletes *the entire offer*
from *the entire system*. The offer might be applied to hundreds, or
thousands of different shipments, and disaster ensues.

The irony here is that, for safety, we have the FK field from Shipment ->
Offer set as on_delete=set_null because god forbid deleting an offer also
deleted all of the shipments. But set_null has the perverse side effect of
actually ENABLING this X button; it's hidden in the presence of
on_delete=cascade. Hah! (and there are other, valid, reasons to delete
offers, and we would never want to delete shipments, so setting
on_delete=cascade is not a solution for us here).

This type of UI confusion around these buttons occurs in a dozen or so
spots around our admin interface.

--
Ticket URL: <https://code.djangoproject.com/ticket/26763#comment:3>

Django

unread,
Jun 15, 2016, 2:08:25 PM6/15/16
to django-...@googlegroups.com
#26763: Control rendering of add/change/delete_related admin buttons
-------------------------------+--------------------------------------
Reporter: chrisclark | Owner: chrisclark
Type: New feature | Status: assigned
Component: contrib.admin | Version: 1.9
Severity: Normal | Resolution:
Keywords: | Triage Stage: Unreviewed

Has patch: 1 | Needs documentation: 1
Needs tests: 1 | Patch needs improvement: 0
Easy pickings: 1 | UI/UX: 1
-------------------------------+--------------------------------------

Comment (by chrisclark):

I think it's also notable that the widget itself is already parameterized
for this functionality, it's just that it was not carried through to the
wrapper, which almost, if you squint and don't think about it too hard,
looks like a bug.

--
Ticket URL: <https://code.djangoproject.com/ticket/26763#comment:4>

Django

unread,
Jun 16, 2016, 3:46:15 PM6/16/16
to django-...@googlegroups.com
#26763: Control rendering of add/change/delete_related admin buttons
-------------------------------+--------------------------------------
Reporter: chrisclark | Owner: chrisclark
Type: New feature | Status: assigned
Component: contrib.admin | Version: 1.9
Severity: Normal | Resolution:
Keywords: | Triage Stage: Accepted

Has patch: 1 | Needs documentation: 1
Needs tests: 1 | Patch needs improvement: 0
Easy pickings: 1 | UI/UX: 1
-------------------------------+--------------------------------------
Changes (by timgraham):

* stage: Unreviewed => Accepted


--
Ticket URL: <https://code.djangoproject.com/ticket/26763#comment:5>

Django

unread,
Jul 12, 2016, 10:34:43 PM7/12/16
to django-...@googlegroups.com
#26763: Control rendering of add/change/delete_related admin buttons
-------------------------------+--------------------------------------
Reporter: chrisclark | Owner: chrisclark
Type: New feature | Status: assigned
Component: contrib.admin | Version: 1.9

Severity: Normal | Resolution:
Keywords: | Triage Stage: Accepted
Has patch: 1 | Needs documentation: 1
Needs tests: 1 | Patch needs improvement: 0
Easy pickings: 0 | UI/UX: 1
-------------------------------+--------------------------------------
Changes (by timgraham):

* easy: 1 => 0


--
Ticket URL: <https://code.djangoproject.com/ticket/26763#comment:6>

Django

unread,
Feb 28, 2018, 3:01:58 AM2/28/18
to django-...@googlegroups.com
#26763: Control rendering of add/change/delete_related admin buttons
-------------------------------+---------------------------------------
Reporter: Chris Clark | Owner: Chris Clark
Type: New feature | Status: closed
Component: contrib.admin | Version: 1.9
Severity: Normal | Resolution: fixed

Keywords: | Triage Stage: Accepted
Has patch: 1 | Needs documentation: 1
Needs tests: 1 | Patch needs improvement: 0
Easy pickings: 0 | UI/UX: 1
-------------------------------+---------------------------------------
Changes (by Carlton Gibson):

* status: assigned => closed
* resolution: => fixed


Comment:

This was resolved by #27728, which allowed overriding admin templatetag's
templates.

--
Ticket URL: <https://code.djangoproject.com/ticket/26763#comment:7>

Reply all
Reply to author
Forward
0 new messages