在 Django 中使用 Chosen.js

Using Chosen.js with Django

您好,我正在尝试将 chosen.js 实施到我的 Django 项目中,到目前为止效果很好。我只有一个问题,我无法解决。我有一个模型,其中 "language" 是 ChardField。我想让用户选择一种以上的语言,所以我尝试使用 chosen Multiple。由于一个 Charfield 只能保存一个值,所以我使用了 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>

所以问题是如何将正常的 chosen.js 输入字段添加到多选字段(使用 Django)?我知道可以在表单中添加多个字段,但这会弄乱我的漏洞代码。

我通过以下方式实现了所选的 multi select:

表格

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>

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