Я использую 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 %}