将Chosen.js与Django一起使用

时间:2017-05-13 18:23:21

标签: django multi-select jquery-chosen

你好我试图将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)?我知道有可能在表单中添加多个字段但这会弄乱我的漏洞代码。

1 个答案:

答案 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>

当然,您需要更新静态文件的位置。希望这是一个很好的起跑方向。