Skip to content

Commit

Permalink
Fixes issue farhan0581#17. Using farhan0581#18 code
Browse files Browse the repository at this point in the history
  • Loading branch information
edgarsj committed Aug 7, 2022
1 parent 0464340 commit 54cc093
Showing 1 changed file with 12 additions and 7 deletions.
19 changes: 12 additions & 7 deletions admin_auto_filters/filters.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
from django.contrib.admin.widgets import AutocompleteSelect as Base
from django.contrib.admin.widgets import AutocompleteSelectMultiple as Base
from django import forms
from django.contrib import admin
from django.db.models.fields.related import ForeignObjectRel
Expand All @@ -8,7 +8,7 @@
from django.shortcuts import reverse
from django import VERSION as DJANGO_VERSION

class AutocompleteSelect(Base):
class AutocompleteSelectMultiple(Base):
def __init__(self, rel, admin_site, attrs=None, choices=(), using=None, custom_url=None):
self.custom_url = custom_url
super().__init__(rel, admin_site, attrs, choices, using)
Expand All @@ -27,7 +27,7 @@ class AutocompleteFilter(admin.SimpleListFilter):
widget_attrs = {}
rel_model = None
parameter_name = None
form_field = forms.ModelChoiceField
form_field = forms.ModelMultipleChoiceField

class Media:
js = (
Expand All @@ -43,8 +43,7 @@ class Media:
def __init__(self, request, params, model, model_admin):
if self.parameter_name is None:
self.parameter_name = self.field_name
if self.use_pk_exact:
self.parameter_name += '__{}__exact'.format(self.field_pk)
self.parameter_name += '__{}__in'.format(self.field_pk)
super().__init__(request, params, model, model_admin)

if self.rel_model:
Expand All @@ -55,7 +54,7 @@ def __init__(self, request, params, model, model_admin):
else:
remote_field = model._meta.get_field(self.field_name).remote_field

widget = AutocompleteSelect(remote_field,
widget = AutocompleteSelectMultiple(remote_field,
model_admin.admin_site,
custom_url=self.get_autocomplete_url(request, model_admin),)
form_field = self.get_form_field()
Expand All @@ -74,7 +73,7 @@ def __init__(self, request, params, model, model_admin):
attrs['data-Placeholder'] = self.title
self.rendered_widget = field.widget.render(
name=self.parameter_name,
value=self.used_parameters.get(self.parameter_name, ''),
value=self.value(),
attrs=attrs
)

Expand Down Expand Up @@ -122,6 +121,12 @@ def has_output(self):
def lookups(self, request, model_admin):
return ()

def value(self):
if self.used_parameters.get(self.parameter_name):
return self.used_parameters.get(self.parameter_name).split(',')
else:
return []

def queryset(self, request, queryset):
if self.value():
return queryset.filter(**{self.parameter_name: self.value()})
Expand Down

0 comments on commit 54cc093

Please sign in to comment.