javascript - Django Datepicker和Autocomplete一起使用时不呈现
问题描述
我正在使用 Django、bootstrap_datepicker_plus 和 django-autocomplete-light。当我分别使用这两个库时我没有任何问题,但是当我尝试以相同的形式使用它们时,由于某种原因,只有自动完成小部件在工作,而日期选择器小部件没有。我不知道为什么,可能是由于库冲突,但有没有解决这个问题的方法?我试图在线搜索,但找不到任何对我有帮助的解决方案。任何帮助表示赞赏和欢迎!
代码如下:
表格.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)
视图.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 %}
解决方案
我遇到过同样的问题。看起来 Autocomplete 和 DatePicker 都在尝试加载 JQuery,这导致多次初始化 JQuery。由于我已经独立加载了 JQuery,我只是从 static/autocomplete_light/ 中删除了 JQuery.init.js 文件。现在一切似乎都在工作。
推荐阅读
- azure-functions - 如何将所有人(甚至未经身份验证的用户)都可以访问的 Azure 函数添加到 AAD 安全的 Azure 函数应用程序中
- python - Xgboost - Decision Tree - Only one leaf
- javascript - Use document.ready or not when loading external data from an aJax call?
- r - Have all filter checkboxes checked to start when using crosstalk package with reactable in r
- java - Spring security HttpServletRequest and SecurityContextHolder logout not working
- sql - ROLLBACK TRANSACTION请求没有对应的BEGIN TRANSACTION,但还是报错
- python - 如何使用测试客户端测试 django (3.0) CreateView 的“form_valid”方法和参数?
- sql - 获取表中的直接父子关系
- java - 没有 main 方法的 Java WebApp 项目的 Visual Studio Code 设置
- python - Python:有没有办法在 selenium chromedriver 中随机选择一个带有 h3 标签的元素?