diff options
| author | Hisham Mahmood <45965466+Hisham-Pak@users.noreply.github.com> | 2024-02-15 06:29:49 +0500 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2024-02-14 22:29:49 -0300 |
| commit | 8db593de05c3516c939b7d4b9eb91e8791f4c79a (patch) | |
| tree | edff850e9b3a91281af88de19cc720aa478b360e /django/contrib/admin/options.py | |
| parent | c783e7a3a0e411811aba83158d55e4f2f3091ac7 (diff) | |
Fixed #35173 -- Fixed ModelAdmin.lookup_allowed() for lookups on foreign keys when not included in ModelAdmin.list_filter.
Regression in f80669d2f5a5f1db9e9b73ca893fefba34f955e7.
Thanks Sarah Boyce for the review.
Diffstat (limited to 'django/contrib/admin/options.py')
| -rw-r--r-- | django/contrib/admin/options.py | 23 |
1 files changed, 12 insertions, 11 deletions
diff --git a/django/contrib/admin/options.py b/django/contrib/admin/options.py index d97597fe66..e93fdf4047 100644 --- a/django/contrib/admin/options.py +++ b/django/contrib/admin/options.py @@ -475,24 +475,25 @@ class BaseModelAdmin(metaclass=forms.MediaDefiningClass): # Lookups on nonexistent fields are ok, since they're ignored # later. break + if not prev_field or ( + prev_field.is_relation + and field not in model._meta.parents.values() + and field is not model._meta.auto_field + and ( + model._meta.auto_field is None + or part not in getattr(prev_field, "to_fields", []) + ) + and (field.is_relation or not field.primary_key) + ): + relation_parts.append(part) if not getattr(field, "path_infos", None): # This is not a relational field, so further parts # must be transforms. break - if ( - not prev_field - or (field.is_relation and field not in model._meta.parents.values()) - or ( - prev_field.is_relation - and model._meta.auto_field is None - and part not in getattr(prev_field, "to_fields", []) - ) - ): - relation_parts.append(part) prev_field = field model = field.path_infos[-1].to_opts.model - if not relation_parts or len(parts) == 1: + if len(relation_parts) <= 1: # Either a local field filter, or no fields at all. return True valid_lookups = {self.date_hierarchy} |
