Opened 3 years ago

Closed 3 years ago

Last modified 3 years ago

#21431 closed Bug (fixed)

Django 1.6 GenericRelation admin list_filter regression

Reported by: stephenmcd Owned by: nobody
Component: contrib.admin Version: 1.6
Severity: Release blocker Keywords:
Cc: Triage Stage: Accepted
Has patch: no Needs documentation: no
Needs tests: no Patch needs improvement: no
Easy pickings: no UI/UX: no


Previously in 1.5 it was possible to have a model A with a GenericRelation field to a model B that had a ForeignKey to model C, and use the BC path in A's admin list_filter.

In 1.6 this fails in django.contrib.admin.util.get_model_from_relation where the model on the wrong side of the relationship is returned, when the correct model is available via the parent_model attribute.

I've created a fix and test case here:

Although as discussed, the fix should probably be different.

Change History (4)

comment:1 Changed 3 years ago by akaariai

  • Needs documentation unset
  • Needs tests unset
  • Patch needs improvement unset
  • Triage Stage changed from Unreviewed to Accepted

A proposed patch for 1.6.x in

There are two issues I am concerned with:

  • Is the tests in the correct place, and are the inline models the correct way forward?
  • Is there more similar regressions in admin? The get_field_by_name() method is used a lot for constructing relations, path names etc. Maybe some of those are affected too.

In general the admin code should be DRYed up a little when it comes to relation path generation.

For master the elif branches in admin/ could be removed, it shouldn't be hit at all, but for 1.6 could cause more regressions (shouldn't, but can't assert it doesn't).

comment:2 Changed 3 years ago by stephenmcd

Thanks akaariai - I can confirm the above path resolves the issue in Mezzanine.

Version 0, edited 3 years ago by stephenmcd (next)

comment:3 Changed 3 years ago by Anssi Kääriäinen <akaariai@…>

  • Resolution set to fixed
  • Status changed from new to closed

In 752d3d70da6291039f33781a0a2ef6f3b7c5fcb5:

Fixed #21431 -- GenRel->FK list_filter regression in admin

Report, analysis and tests from stephenmcd.

comment:4 Changed 3 years ago by Anssi Kääriäinen <akaariai@…>

In 5730bf281922151f211a2509dd8b493230d6a187:

[1.6.x] Fixed #21431 -- GenRel->FK list_filter regression in admin

Report, analysis and tests from stephenmcd.

Backpatch of 752d3d70da6291039f33781a0a2ef6f3b7c5fcb5 from master.

Note: See TracTickets for help on using tickets.
Back to Top