Я использую django-autocomplete-light в приложении администратора django, но я не могу правильно отфильтровать выбор для поля fk с аргументом limit_choiches_to
: я все еще получаю весь набор запросов. вот код:
# autocomplete_light.py
from django.db.models import Q
import autocomplete_light
from myapp.models import MyClass
from otherapp.models import Deps
class MyClassAutocomplete(autocomplete_light.AutocompleteModelBase):
""" MyClass autocomplete widget class """
choiches = MyModels.objects.filter(
Q(dpt__in=Deps.MAIN_DEPARTMENTS),
Q(user__is_active=True)
)
search_fields = ['^full_name', 'initials']
attrs = {'placeholder': 'Type a name'}
autocomplete_light.register(MyClass, MyClassAutocomplete)
# admin.py
class SampleModelAdminForm(forms.ModelForm):
class Meta:
link_attrs = {'cols': 105, 'rows': 3}
model = SampleModel
def __init__(self, *args, **kwargs):
super(SampleModelAdminForm, self).__init__(
*args, **kwargs
)
self.fields['my_fk'].widget = autocomplete_light.ChoiceWidget(
'MyClassAutocomplete'
)
Я также попытался переопределить метод choices_for_request
в подклассе AutocompleteModelBase:
def choices_for_request(self):
return MyModels.objects.filter(
Q(dpt__in=Deps.MAIN_DEPARTMENTS),
Q(user__is_active=True)
)
Таким образом, у меня есть отфильтрованный набор запросов, но я теряю функцию автозаполнения (для каждого слова, которое я набираю, например, «Es», он начинает показывать мне варианты из буквы A)
Кто-нибудь может помочь мне с этим?
Благодарность