你好我试图将selected.js实现到我的Django项目中,到目前为止它工作得很好。我只有一个我无法解决的问题。我有一个模型,其中"语言"是ChardField
。我想让用户选择多种语言,所以我尝试使用选择的Multiple。由于Charfield只能容纳一个Value,所以我使用了Django Multiselect。现在Chosen.js不再工作了,我不知道该怎么办。
型号:
from multiselectfield import MultiSelectField
class UserProfile(models.Model):
language = MultiSelectField(verbose_name=_(u"Content Language"),
max_length=40, choices=settings.LANGUAGES,default='en')`
表格:
class UserProfileForm(forms.ModelForm):
class Meta:
model = UserProfile
fields=[
'language',
.....
]
模板:
{% load widget_tweaks %}
{% csrf_token %}
<span>Content language {{ form.language|add_class:"chosen-select" }}</span>
所以问题是如何将正常的selected.js输入字段添加到多个选定的字段(使用Django)?我知道有可能在表单中添加多个字段但这会弄乱我的漏洞代码。
答案 0 :(得分:2)
我通过以下方式实现了所选的多选:
表单
class select_language(ModelForm):
#Get data for choice boxes
language_results = language.objects.all()
select_language = forms.ModelMultipleChoiceField(
queryset=language_results,
widget = forms.SelectMultiple(attrs={
'placeholder': "Choose the users(s)",
'class': 'chosen-select',
'multiple tabindex': '4',
}),
)
模板:
....
{% load static %}
<link rel="stylesheet" href="{% static 'chosen.css' %}">
<link rel="stylesheet" href="{% static 'prism.css' %}">
....
{{ select_language.select_language }}
<script type="text/javascript" src="{% static 'chosen.jquery.js' %}"></script>
<script type="text/javascript" src="{% static 'docsupport/prism.js' %}"></script>
<script type="text/javascript" src="{% static 'docsupport/init.js' %}"></script>
当然,您需要更新静态文件的位置。希望这是一个很好的起跑方向。