Исправлена инициализация Select2 для поиска клиента
Проблема: Select2 не инициализировалась корректно, так как конфликтовал с общим инициализатором Select2 Решение: - Удален класс select2 из поля customer в форме (orders/forms.py) - Select2 для customer теперь инициализируется отдельно с AJAX поиском - Используется стандартный Django ID для поля (id_customer) - Правильно обработаны все ссылки на $customerSelect в JavaScript Теперь поиск работает корректно: - Поиск по имени, телефону (любой формат) и email - Быстрое создание клиента без перезагрузки страницы - Автоматическое заполнение формы при создании 🤖 Generated with Claude Code Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
@@ -49,10 +49,11 @@ class OrderForm(forms.ModelForm):
|
||||
else:
|
||||
field.widget.attrs.update({'class': 'form-control'})
|
||||
|
||||
# Select2 для выпадающих списков
|
||||
# Select2 для поля customer с AJAX поиском (инициализируется отдельно в JS)
|
||||
# Django автоматически генерирует ID как id_customer
|
||||
self.fields['customer'].widget.attrs.update({
|
||||
'class': 'form-select select2',
|
||||
'data-placeholder': 'Выберите клиента'
|
||||
'class': 'form-select',
|
||||
'data-placeholder': 'Начните вводить имя, телефон или email'
|
||||
})
|
||||
|
||||
self.fields['delivery_address'].widget.attrs.update({
|
||||
|
||||
@@ -400,7 +400,10 @@
|
||||
<script>
|
||||
document.addEventListener('DOMContentLoaded', function() {
|
||||
// Инициализация Select2 для поля customer с поиском
|
||||
$('#{{ form.customer.id_for_label }}').select2({
|
||||
// Django генерирует ID как id_customer для поля customer
|
||||
const $customerSelect = $('#id_customer');
|
||||
|
||||
$customerSelect.select2({
|
||||
theme: 'bootstrap-5',
|
||||
width: '100%',
|
||||
language: 'ru',
|
||||
@@ -477,7 +480,7 @@ document.addEventListener('DOMContentLoaded', function() {
|
||||
}
|
||||
|
||||
// Обработка выбора в Select2
|
||||
$('#{{ form.customer.id_for_label }}').on('select2:select', function(e) {
|
||||
$customerSelect.on('select2:select', function(e) {
|
||||
const data = e.params.data;
|
||||
|
||||
if (data.is_create_option) {
|
||||
@@ -828,7 +831,6 @@ document.addEventListener('DOMContentLoaded', function() {
|
||||
modal.hide();
|
||||
|
||||
// Выбираем созданного клиента в Select2
|
||||
const $customerSelect = $('#{{ form.customer.id_for_label }}');
|
||||
const newOption = new Option(data.name, data.id, true, true);
|
||||
$customerSelect.append(newOption).trigger('change');
|
||||
|
||||
|
||||
Reference in New Issue
Block a user