Django Datepicker и Autocomplete не отображаются при использовании вместе - PullRequest
0 голосов
/ 17 февраля 2020

Я использую Django, bootstrap_datepicker_plus и django -autocomplete-light. У меня не было проблем, когда я использовал две библиотеки по отдельности, но когда я пытаюсь использовать их в одной и той же форме, по какой-то причине работает только виджет автозаполнения, а виджет DatePicker - нет. Я не уверен, почему, может быть, это из-за конфликтующих библиотек, но есть ли решения для этой проблемы? Я пытался искать в Интернете, но не мог найти решение, которое помогло бы мне. Любая помощь приветствуется!

Код ниже:

forms.py

class SalesTaskPlaceHolder(forms.ModelForm):
    class Meta:
        model = SalesTask
        fields = ['title', 'description', 'priority', 'status', 'rnd_project', 'salesExtra', 
                  'rndExtra', 'start_date', 'due_date']
        exclude = ['task_id']
        widgets = {
                  'salesExtra': autocomplete.ModelSelect2Multiple(url='sales-extra-autocomplete'),
                  'rndExtra': autocomplete.ModelSelect2Multiple(url='rnd-extra-autocomplete'),
                  'start_date': DatePickerInput(),
                  'due_date': DatePickerInput(),
                  }

    def __init__(self, *args, **kwargs):
        self.id = kwargs.pop('id',None)
        super(SalesTaskPlaceHolder, self).__init__(*args, **kwargs)
        self.fields['title'].widget.attrs['placeholder'] = 'Title of your task'
        self.fields['description'].widget.attrs['placeholder'] = 'What is this task about?'
        self.fields['status'].widget.attrs['placeholder'] = '0-100'
        self.fields['salesExtra'].label = 'Sales Personnel' 
        self.fields['rndExtra'].label = 'RnD Personnel'
        self.fields['rnd_project'].queryset = 
        RndProject.objects.filter(customerRequirement__sales_project=self.id)

views.py

class SalesExtraAutoComplete(autocomplete.Select2QuerySetView):
    def get_queryset(self):
        qs = SalesExtra.objects.all()

        if self.q:
            qs = qs.filter(user__username__istartswith=self.q)

        return qs

class TaskCreateView(LoginRequiredMixin, CreateView):
   model = SalesTask
   form_class = SalesTaskPlaceHolder
   template_name = 'rnd/task_create.html'

  def get_form_kwargs(self):
    kwargs = super(TaskCreateView, self).get_form_kwargs()
    kwargs['id'] = self.kwargs['id']
    return kwargs

  def form_valid(self, form):
    project = get_object_or_404(SalesProject, sales_project_id=self.kwargs['id'])
    form.instance.sales_project = project
    return super(TaskCreateView, self).form_valid(form)

  def get_success_url(self):
    return reverse('rnd-projects', kwargs={'id': self.object.sales_project.sales_project_id})

task_create. html

{% extends 'rnd/base.html' %}

{% load static %}
{% load crispy_forms_tags %}

{% block content %}

<link rel="stylesheet" type="text/css" href="{% static 'rnd/test.css' %}">

<form method="POST" id='submitform'> {% csrf_token %}
    {{ form|crispy }}
    <input type="submit" value="Save" id='submitbtn' class='btn w3-teal' />
</form>


<script type="text/javascript">
    $('#submitbtn').click(function() {
        if ($('#id_title').val().length != 0 && $('#id_description').val().length != 0 && 
            $('#id_priority').val().length != 0 && $('#id_status').val().length != 0 && 
            $('#id_start_date').val().length != 0 && $('#id_due_date').val().length != 0) {
                $('#submitbtn').hide();
                $('#submitform').append('<p>Submitting your form now...</p>')
            }
        });
</script>


{{ form.media }}

{% endblock content %}

1 Ответ

0 голосов
/ 09 мая 2020

У меня была такая же проблема. Похоже, что и Autocomplete, и DatePicker пытаются загрузить JQuery, что привело к многократной инициализации JQuery. Поскольку я уже загружал в JQuery независимо, я просто удалил файл JQuery .init. js из static / autocomplete_light /. Кажется, теперь все работает.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...