Кажется, я не могу заставить работать django-ajax-selects

Я следовал руководству по установке django-ajax-selects по адресу этот URL, и все равно ничего не происходит: когда я что-то ввожу в отображаемое поле, ничего не отображается, отправляются POST-запросы и т. д. Поскольку этот пакет был сделан для администратора, я должен отсутствовать что-то в моей форме вне администратора.

Я сделал следующее:

settings.py

INSTALLED_APPS = (
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'fr',
    ...
    'ajax_select', # pip install django-ajax-selects
)

lookups.py (в папке приложения «fr»)

from ajax_select import register, LookupChannel
from fr.models.generalModels import City

@register('city')
class CityLookup(LookupChannel):

    model = City

    def get_query(self, q, request):
        return self.model.objects.filter(full_name__icontains=q)

    def format_item_display(self, item):
        return u"<span class='tag'>%s</span>" % item.full_name

формы.py

class JobOfferForm(forms.ModelForm):
    city = AutoCompleteSelectField('city')
    class Meta:
        model = JobOffer

шаблон.html

<script src="{% static 'ajax_select/js/bootstrap.js' %}"></script>
<script src="{% static 'ajax_select/js/ajax_select.js' %}"></script>
<link rel="stylesheet" type="text/css" href="{% static 'ajax_select/css/ajax_select.css' %}">
...
<form class="center-align card-panel" enctype="multipart/form-data" id="JobOfferForm" action="" method="POST">
    {% csrf_token %}
    {{ jobOfferForm.city }}
    {{ jobOfferForm.meta }}
</form>
...

Что я делаю неправильно?

РЕДАКТИРОВАТЬ: Похоже, я пропустил файл bootstrap.js и css, а также form.meta (но я не уверен, что последний что-то делает).
Теперь у меня есть Forbidden ( 403) ошибка в консоли. Я почти уверен, что это потому, что у меня нет crsf_token в запросе ajax, хотя он есть в форме.


person Raphaël Gomès    schedule 26.01.2016    source источник
comment
Я понял проблему. См. мой ответ здесь.   -  person Raphaël Gomès    schedule 31.01.2016


Ответы (2)


добавление

{{ form.media }} 

решит вашу проблему.

http://django-ajax-selects.readthedocs.io/en/latest/Outside-of-Admin.html

person Fu Jiantao    schedule 29.10.2016

я думаю, вам нужно определить метод

def format_match(self, obj):
    return self.format_item_display(obj)

этот метод будет управлять результатом запроса. посмотрите здесь: http://django-ajax-selects.readthedocs.org/en/latest/LookupChannel.html#lookups-py

и здесь: https://github.com/crucialfelix/django-ajax-selects/blob/master/example/example/lookups.py

person Madalosso    schedule 05.02.2016