diff options
| author | Claude Paroz <claude@2xlibre.net> | 2013-11-21 22:18:52 +0100 |
|---|---|---|
| committer | Claude Paroz <claude@2xlibre.net> | 2013-11-21 22:24:00 +0100 |
| commit | 9cbcd06b1adf5a505646f30898c3370d1c4ab726 (patch) | |
| tree | 6cf248e320f64422c032f6dd9adb804f769c8c34 /tests/admin_ordering | |
| parent | 5730bf281922151f211a2509dd8b493230d6a187 (diff) | |
[1.6.x] Fixed #21405 -- Prevented queryset overwrite in BaseModelAdmin
Thanks guido@20tab.com for the report and Tim Graham for the
analyze.
Backport of 1718b5256c from master.
Diffstat (limited to 'tests/admin_ordering')
| -rw-r--r-- | tests/admin_ordering/tests.py | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/tests/admin_ordering/tests.py b/tests/admin_ordering/tests.py index 6655ad37ad..083c053d66 100644 --- a/tests/admin_ordering/tests.py +++ b/tests/admin_ordering/tests.py @@ -148,6 +148,28 @@ class TestRelatedFieldsAdminOrdering(TestCase): # should be ordered by rank (defined by the ModelAdmin) self.check_ordering_of_field_choices([self.b1, self.b2]) + def test_custom_queryset_still_wins(self): + """Test that custom queryset has still precedence (#21405)""" + class SongAdmin(admin.ModelAdmin): + # Exclude one of the two Bands from the querysets + def formfield_for_foreignkey(self, db_field, **kwargs): + if db_field.name == 'band': + kwargs["queryset"] = Band.objects.filter(rank__gt=2) + return super(SongAdmin, self).formfield_for_foreignkey(db_field, **kwargs) + def formfield_for_manytomany(self, db_field, **kwargs): + if db_field.name == 'other_interpreters': + kwargs["queryset"] = Band.objects.filter(rank__gt=2) + return super(SongAdmin, self).formfield_for_foreignkey(db_field, **kwargs) + + class StaticOrderingBandAdmin(admin.ModelAdmin): + ordering = ('rank',) + + admin.site.unregister(Song) + admin.site.register(Song, SongAdmin) + admin.site.register(Band, StaticOrderingBandAdmin) + + self.check_ordering_of_field_choices([self.b2]) + def tearDown(self): admin.site.unregister(Song) if Band in admin.site._registry: |
