Я использую django-filter
для фильтрации Article
набора запросов.Article
имеет поле locations
:
locations = models.ManyToManyField('locations.Location', related_name='articles')
Я фильтрую Articles
по полю locations
и в качестве виджета я использую django-autocomplete-light
widget Select2Multiple
.
class ArticleFilter(django_filters.FilterSet):
from locations.models import Location
...
locations = django_filters.ModelMultipleChoiceFilter(method='locations_filter',queryset=Location.objects.all(),label='Lokality')
...
class Meta:
model = Article
fields = ['locations','title','price_lte','price_gte','price_currency'
]
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
# HERE I SPECIFY THE DAL WIDGET
self.form.fields['locations'].widget = autocomplete.Select2Multiple(url="locations:locations_autocomplete")
Фильтрация работает хорошо, автозаполнение тоже:
Когда я нажимаю на кнопку «Отправить», она показывает правильно отфильтрованные результаты, строка запроса URL-адреса содержит все отфильтрованные атрибуты, включая, например, locations=45
но он не показывает location
с id=45
в качестве начального значения для поля locations
.
Странная вещьчто если я удаляю виджет, то вижу, что изначально есть начальное значение:
Просто Select2
не показывает его изначение местоположения undefinfed
.
Я использую этот же подход на raw django.forms
, и он работает правильно.Инициалы тоже.
Знаете ли вы, где может быть проблема?