2015-11-10 7 views
7

djangoのmanytomanyfieldにselect2ウィジェットを使いたいです。いくつかのdjango/select2モジュールがありますが、ドキュメントが混乱しています。私が望むものの簡単な例が見つかりません。助けてくれてありがとう。djangoでは、manytomanyfieldにselect2ウィジェットを使用するにはどうすればいいですか?

+0

ジャンゴ-SELECT2-フォーム、それは非常に簡単でありません。 – user1993015

答えて

7

開始するには良い場所はdjango-select2です。彼らは良い仕事を持っていますexampleもあります。

は、ここで私はちょうど彼らの例

モデルSE​​LECT2にマップされますが何であるかのフィールドが多対多の関係タイプで、ここで提示

@python_2_unicode_compatible 
class Album(models.Model): 
    title = models.CharField(max_length=255) 
    artist = models.ForeignKey(Artist) 
    featured_artists = models.ManyToManyField(Artist, blank=True, related_name='featured_album_set') 
    primary_genre = models.ForeignKey(Genre, blank=True, null=True, related_name='primary_album_set') 
    genres = models.ManyToManyField(Genre) 

    def __str__(self): 
     return self.title 

の文脈の中で主要なアイデアを考え出します。

フォーム

class AlbumSelect2WidgetForm(forms.ModelForm): 
    class Meta: 
     model = models.Album 
     fields = (
      'artist', 
      'primary_genre', 
     ) 
     widgets = { 
      'artist': Select2Widget, 
      'primary_genre': Select2Widget, 

     } 

それが必要になります場合は、Select2Widgetをカスタマイズすることは非常に簡単です。

、最終 - ジャンゴ> = 2.0でのHTML部分

{% load staticfiles %} 
<!DOCTYPE html> 
<html> 
<head> 
    {{ form.media.css }} 
    <style type="text/css"> 
    select { 
     width: 200px; 
    } 
    </style> 
</head> 
<body> 
<form method="post" action=""> 
    {% csrf_token %} 
    {{ form }} 
    <input type="submit" value="Submit Form"/> 
</form> 
<script src="{% static '//code.jquery.com/jquery-2.1.4.min.js' %}"></script> 
<script type="text/javascript"> 
    window.onerror = function (msg) { 
    $("body").attr("JSError", msg); 
    } 
</script> 
{{ form.media.js }} 
</body> 
+1

実際の例をありがとうございました。 – Sardathrion

関連する問題