Djangoで、タグ付けをuuidとともに使う

Djangoで、投稿などにタグを付けたいと思うことがよくあると思います。また、それぞれの投稿にuuidを付けてる場合もあると思います。そんなときに簡単にタグを付けられるプラグインが、”django-taggit“というプラグインになります。
公式ドキュメントはこちら

使い方

pipを使ってインストールします。

$ pip install django-taggit

次に、settings.pyの中のINSTALLED_APPSにtaggitを追加します。

モデルにタグのフィールドを持たせます。TaggableManagerをインポートした上で、models.pyなどに作成したモデルに、タグ用のフィールドを追加します。今回はtagsという名前を使っています。

そして、migrateをします。

$ ./manage.py migrate

これだけで、普通にIDを持たせているモデルに対しては、タグを付けることができます。
forms.ModelFormなどで入力をしている場合は、fieldsに’tag’を追加するだけでフォーム入力が可能になります。
また、すべてのタグは “tags.all()”で取得できます。templateでモデルに属するタグをすべて表示する場合は、以下のようになります。

さて、ここからが本題です。uuid.uuid4()などでidを持たせて、pk(primary key)として利用している場合は、上記の設定だとうまくタグが表示されません。それを可能にするためには、UUIDにタグ付けされたアイテムのクラスを作り、それを経由させる必要があります。上記のモデルを書き換えて、以下のようにしてください。

これでuuidと紐付けられたタグを表示できるようになったはずです。僕はできました。

Leave a Reply

Your email address will not be published. Required fields are marked *

CAPTCHA


Back to Top