Что может привести к тому, что правая половина FilteredSelectMultiple в django не отображает "начальные" значения после перезагрузки страницы (Ctrl R)?
У меня сложилось впечатление, что если я сделаю что-то вроде этого:
self.fields["xxx"].initial = termin.getXxx.all()
то в правой половине виджета будет отображаться значение termin.getXxx.all()
И это правда, почти всегда. За исключением случая, когда я перезагружаю страницу, используя 'Ctrl R', потому что тогда я получаю правую половину совершенно пустой, даже если self.fields["xxx"].initial
содержит требуемое значение. Что такого особенного в 'Ctrl R', что ломает виджет?
Ниже код виджета:
xxx = forms.ModelMultipleChoiceField(
queryset=Person.objects.none(),
widget=OurFilteredSelectMultiple("XXX", is_stacked=False),
required=False,
)
class OurFilteredSelectMultiple(FilteredSelectMultiple):
class Media:
js = (
"/jsi18n/",
"/static/core/admin/js/our_filtered_multi_select_widget.js",
)
css = {"all": ("/static/core/admin/css/our_filtered_multi_select_widget.css",)}
def render(self, name, value, attrs, renderer):
"""! Adding the id of the field to an hidden input.
@detail These widgets HTML-elements get their id based on the id of the field.
In order to use it in JS we set up this hidden parameter and get the value inside js.
"""
identifier = "multiple_select_id"
ret = super().render(name, value, attrs, renderer)
ret += f'<input type="hidden" id="{identifier}" value="{attrs.get("id")}">'
return mark_safe(ret)