Django s2forms.ModelSelect2Widget не работает должным образом
hi all Я пытаюсь использовать ModelSelect2Widget Я установил сервер redis, который я тестировал и он работает. затем я установил следующий проект:
models.py
class Doctor(models.Model):
user=models.OneToOneField(User,on_delete=models.CASCADE)
status=models.BooleanField(default=True)
def __str__(self):
return "{} ({})".format(self.user.first_name,self.department)
class Patient(models.Model):
user=models.OneToOneField(User,on_delete=models.CASCADE)
assignedDoctorId = models.ForeignKey(Doctor, on_delete=models.CASCADE,related_name='doctor_assigned')
admitDate=models.DateField(auto_now=True)
status=models.BooleanField(default=False)
def __str__(self):
return self.user.first_name
form.py
class BaseAutocompleteSelect(s2forms.ModelSelect2Widget):
class Media:
js = ("admin/js/vendor/jquery/jquery.min.js",)
def __init__(self, **kwargs):
super().__init__(kwargs)
self.attrs = {"style": "width: 300px"}
def build_attrs(self, base_attrs, extra_attrs=None):
base_attrs = super().build_attrs(base_attrs, extra_attrs)
base_attrs.update(
{"data-minimum-input-length": 10, "data-placeholder": self.empty_label}
)
return base_attrs
class DoctorAutocompleteWidget(BaseAutocompleteSelect):
empty_label = "-- select doctor --"
search_fields = ("username__icontains",)
queryset=models.Doctor.objects.all().filter(status=True).order_by("id")
class PatientForm(forms.ModelForm):
assignedDoctorId=forms.ModelChoiceField(queryset=models.Doctor.objects.all().filter(status=True),
widget=DoctorAutocompleteWidget)
но результаты - это пустой список введите описание изображения здесь при использовании
assignedDoctorId=forms.ModelChoiceField(queryset=models.Doctor.objects.all().filter(status=True),empty_label="Name and Department")
он показывает мне список, но я хотел бы использовать select2, чтобы использовать redis и строку поиска
Я хотел бы создать меню select и multiselect с панелью поиска для изменения значения списка: в будущем я хотел бы сделать то же самое со списком таблиц и изменять опцию выпадающего меню, если пользователь вставляет строку в модуль ввода или выбирает опцию из другого выпадающего меню