У меня возникли проблемы при использовании dal, и я попытался создать простой пример.
Я сделал почти то же самое, что и Django autocomplete light: поле не заполнено а также приложил ответ по ссылке.
Вот шаги, которые я прошел:
Шаг 1) Когда я добавляю вот так в заголовок html (точно так же, как ответ выше):
<link href="http://dal-yourlabs.rhcloud.com/static/collected/autocomplete_light/vendor/select2/dist/css/select2.css" type="text/css" media="all" rel="stylesheet" />
<link href="http://dal-yourlabs.rhcloud.com/static/collected/autocomplete_light/select2.css" type="text/css" media="all" rel="stylesheet" />
<script type="text/javascript" src="http://dal-yourlabs.rhcloud.com/static/collected/autocomplete_light/autocomplete.init.js"></script>
<script type="text/javascript" src="http://dal-yourlabs.rhcloud.com/static/collected/autocomplete_light/select2.js"></script>
Ошибка консоли инспектора браузера выглядит так:
Uncaught ReferenceError: yl is not defined(anonymous function) @ autocomplete.init.js:75select2.js:117
Uncaught ReferenceError: yl is not defined(anonymous function) @ select2.js:117
Шаг 2) Поэтому я добавил jquery.js и другие файлы js в библиотеку dal:
<link href="http://dal-yourlabs.rhcloud.com/static/collected/autocomplete_light/vendor/select2/dist/css/select2.css" type="text/css" media="all" rel="stylesheet" />
<link href="http://dal-yourlabs.rhcloud.com/static/collected/autocomplete_light/select2.css" type="text/css" media="all" rel="stylesheet" />
<script type="text/javascript" src="http://dal-yourlabs.rhcloud.com/static/collected/admin/js/vendor/jquery/jquery.js"></script>
<script type="text/javascript" src="http://dal-yourlabs.rhcloud.com/static/collected/admin/js/jquery.init.js"></script>
<script type="text/javascript" src="http://dal-yourlabs.rhcloud.com/static/collected/autocomplete_light/jquery.init.js"></script>
<script type="text/javascript" src="http://dal-yourlabs.rhcloud.com/static/collected/autocomplete_light/autocomplete.init.js"></script>
<script type="text/javascript" src="http://dal-yourlabs.rhcloud.com/static/collected/autocomplete_light/select2.js"></script>
И ошибка изменилась так:
select2.js:66 Uncaught TypeError: $(...).select2 is not a function(anonymous function) @ select2.js:66dispatch @ jquery.js:4435elemData.handle @ jquery.js:4121trigger @ jquery.js:4350(anonymous function) @ jquery.js:4901each @ jquery.js:374each @ jquery.js:139trigger @ jquery.js:4900initialize @ autocomplete.init.js:45each @ jquery.js:374each @ jquery.js:139(anonymous function) @ autocomplete.init.js:50fire @ jquery.js:3099fireWith @ jquery.js:3211ready @ jquery.js:3417completed @ jquery.js:3433
Шаг 3) И последнее, я нашел эти два плагина и добавил, и это сработало!
Plugins of [Step 2)] +
<link href="https://cdnjs.cloudflare.com/ajax/libs/select2/4.0.3/css/select2.min.css" rel="stylesheet" />
<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/select2/4.0.3/js/select2.min.js"></script>
Итак, вот мои вопросы:
A) Должен ли я добавить все вышеперечисленные плагины? Например, в плагинах [шаг 3) есть два файла select2.js, и я сбит с толку и задаюсь вопросом, работают ли они по-разному (если я удалю один из них, это не сработает).
B) В соответствии с вопросом Django autocomplete light: поле не заполнено, не должен работать шаг 2? Почему возникает ошибка?
C) В этом примере кода часть следующего кода кажется вообще не работающей. Если не с учетной записью администратора, внешний ключ не отображается в текстовом поле, другими словами, в списке ничего не может быть найдено. (из пособия, это позволяет использовать автозаполнение вне админ)
{% block footer %}
<script type="text/javascript" src="http://dal-yourlabs.rhcloud.com/static/collected/admin/js/vendor/jquery/jquery.js"></script>
{{ form.media }}
{% endblock %}
@ Я также проверил, что django-autocomplete-light не работает - select2 не является функцией, и перестановка установленного приложения не сработала.