Реализация Django FilteredSelectMulitple в форме без администраторов - PullRequest
3 голосов
/ 10 мая 2019

Я пытаюсь реализовать виджет Django FilteredSelectMultiple в форме без прав администратора, и хотя он отображается, при загрузке я получаю ошибку JavaScript в консоли. Ошибка

TypeError: node.tagName не определено SelectFilter2.js: 11: 9

Если я затем выбираю элементы из списка, я получаю следующую ошибку JavaScript в консоли

TypeError: кэш не определен SelectBox.js: 76: 29

Это моя форма Джанго

class PlaylistForm(forms.ModelForm): 
    class Meta:
        model = Playlist
        exclude = ['id']
        widgets = {
            'owner' : forms.HiddenInput(),
            'name' : forms.TextInput (
                attrs={
                    'class' : 'form-control',
                    'placeholder' : _('Playlist Title'),
                    'label' : _('Playlist Title')}),
            'projects' : FilteredSelectMultiple ('Items', is_stacked=True, attrs = {'class' : 'form-control'})
        }
    class Media:
        css = {
            'all': (os.path.join(settings.BASE_DIR, '/static/admin/css/widgets.css'),),
        }
        js = (
            '/admin/jsi18n/',
            )

Это вид

class CreatePlaylistView (LoginRequiredMixin, CreateView):
    model = Playlist
    form_class = PlaylistForm

А это шаблон дополнения

<script type="text/javascript" src="{% static 'admin/js/vendor/jquery/jquery.min.js' %}"></script>
<script type="text/javascript" src="{% static 'admin/js/jquery.init.js' %}"></script>
<script type="text/javascript" src="{% url 'admin:jsi18n' %}"></script>
{{ form.media }}

И я включил это urls.py на основе некоторых других сообщений

path('jsi18n/', JavaScriptCatalog.as_view(), name='javascript-catalog'),

Что я понял не так?

EDIT

Я посмотрел на это еще немного, и я получаю разные ошибки браузера в Chrome от Firefox. Firefox в посте выше.

Начальная ошибка Chrome была

TypeError: jQuery.easing[jQuery.easing.def] is not a function 
SyntaxError: Unexpected token <
SyntaxError: Unexpected token <
ReferenceError: interpolate is not defined

Я добавил <script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/jquery-easing/1.4.1/jquery.easing.min.js"></script> в шаблон, но все еще получаю оставшиеся ошибки консоли

1 Ответ

4 голосов
/ 13 мая 2019

Только что понял проблему. Проблема в том, что я не обернул {{ form }} в <form> теги, потому что я просто тестировал на ходу

...