автодополение в django
Подскажите есть ли какая то библиотека для авто дополнения в django-forms? Нашел в просторах интернета библиотеку django-autocomplete-light но в документации не понял как она применяется. Есть такая модель:
class PrinterSchedule(Schedule):
printer = models.ForeignKey(Printer, models.CASCADE, verbose_name="Принтер")
status = models.ForeignKey(PrinterStatus, models.CASCADE, verbose_name="Статус")
location = models.ForeignKey(Room, models.CASCADE, verbose_name="Место расположение")
class Meta:
verbose_name = "Журнал принтера"
verbose_name_plural = "Журналы принтеров"
@staticmethod
def get_absolute_url():
return reverse('printerScheduleList')
def __str__(self):
return self.apper
Есть класс с формой:
class PrinterScheduleCreateForm(forms.ModelForm):
class Meta:
model = PrinterSchedul
fields = '__all__'
widgets = {
'apper': forms.TextInput(attrs={'class': 'form-control'}),
'printer':forms.Select(attrs={'class': 'form-control'}),
'status': forms.Select(attrs={'class': 'form-control'}),
'location': forms.Select(attrs={'class': 'form-control'}),
'description': forms.Textarea(attrs={'class': 'form-control'}),
'date': forms.SelectDateWidget(attrs={'class': 'form-control'}),
}
Необходимо, что бы 'printer':forms.Select(attrs={'class': 'form-control'}) можно был автодополнения при вводе символов.
Ответы (2 шт):
попробуй django_select2 - https://django-select2.readthedocs.io/en/latest/index.html
там есть функционал, который тебе нужен. В твоем случае можно использовать будет Select2Widget
widgets = {
...
'printer':Select2Widget(attrs={'class': 'form-control'}),
...
}
Можно сделать гораздо проще без установки библиотек
К примеру так:
<form action="" method="POST">
{{form.as_p}}
{% csrf_token %}
<p><input type="submit" value="Отправить"></p>
</form>
<script src="https://code.jquery.com/jquery-3.5.1.min.js"
integrity="sha256-9/aliU8dGd2tb6OSsuzixeV4y/faTqgFtohetphbbj0=" crossorigin="anonymous"></script>
<script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/js/select2.min.js"></script>
<script>
$(document).ready(function() {
$('#id_printer).select2();
});
</script>
Посмотрите видео https://www.youtube.com/watch?v=8VYx-cNF1lU https://github.com/akjasim/cb_dj_select2