Features: 1) Add missing call to super().__init__() in admin field constructor;

Fixes: 1) Correct use of `remote` to `remote_opts` for consistent model metadata reference;

Extra: 1) Improve formatting for better code readability.
This commit is contained in:
Egor Pavlovich Gorbunov 2025-07-01 18:16:02 +03:00
parent 83ac6b27e6
commit 5926ceb8bf

View file

@ -42,15 +42,17 @@ class RelatedAutocompleteFilter(FieldListFilter):
limit = 10
def __init__(self, field, request, params, model, model_admin, field_path):
super().__init__(field, request, params, model, model_admin, field_path)
self.lookup_kwarg = f"{field_path}__{field.target_field.name}__exact"
self.lookup_val = params.get(self.lookup_kwarg, "")
remote = field.remote_field.model._meta
remote_opts = field.remote_field.model._meta
base_url = reverse("admin:autocomplete")
self.autocomplete_url = (
f"{base_url}"
f"?app_label={remote.app_label}"
f"&model_name={remote.model_name}"
f"?app_label={remote_opts.app_label}"
f"&model_name={remote_opts.model_name}"
f"&field_name={field.name}"
f"&limit={self.limit}"
)
@ -63,12 +65,13 @@ class RelatedAutocompleteFilter(FieldListFilter):
def choices(self, changelist):
yield {
"selected": bool(self.lookup_val),
"query_string": changelist.get_query_string(
({self.lookup_kwarg: self.lookup_val} if self.lookup_val else {}),
[]
),
"display": _(""),
"selected": bool(self.lookup_val),
"query_string": changelist.get_query_string(
({self.lookup_kwarg: self.lookup_val}
if self.lookup_val else {}),
[]
),
"display": _(""),
"autocomplete_url": self.autocomplete_url,
"lookup_kwarg": self.lookup_kwarg,
"lookup_val": self.lookup_val,