• Skip to main content
  • Skip to secondary menu
  • Skip to primary sidebar
  • Skip to footer

AI活用エンジニアへの道

生成AI時代のエンジニアの生き方を考えるメディア(作成途中)

  • コラム
  • 生成AI
  • プログラミング
    • Python入門
    • Flask入門
    • Django入門
  • プロフィール
Home / プログラミング / Django / DjangoのModelにSlugFieldを利用する。その利用方法と

DjangoのModelにSlugFieldを利用する。その利用方法と

1 SlugFieldの設定と挿入のしかた
2 関連記事

以前の記事で、DjangoのModelのフィールドについて説明したが、今回は、DjangoのModelのFieldの一つのSlugFieldについて説明する。このSlugFieldは文字とハイフン、数字、アンダースコアだけを含んだ文字列。主にURLに利用されるフィールドである。


SlugFieldの設定と挿入のしかた

SlugFieldとは、Djangoで利用されるFieldの1つ。

以下のようなフィールド

フィールド名 概要 DBでのデフォルトのカラム定義(sqlite)
SlugField 文字、ハイフン、アンダースコア、数字のみの文字列URLに利用される。 varchar(50)
  • SlugField宣言時に、max_fieldを指定しない場合デフォルトで50が最大になる
  • null=True, blank=Trueなどと指定しないと、デフォルトの値の入力を求められる
  • デフォルトで自動的にインデックスが作成される

実際にソースコードを見てみましょう

  • models.pyの定義
class PostModel(models.Model):
    id = models.BigAutoField(primary_key=True)
    active = models.BooleanField(blank=True)
    title = models.CharField(
        max_length=240, verbose_name='Post Title', unique=True, error_messages={
            'unique': 'This title is not unique',
            'blank': 'This is required'
        },
        help_text='Unique Title'
    )
    slug = models.SlugField(null=True, blank=True) # slugを設定

利用する場合には、以下のようにするのがよい。
urls.pyでslugの値をurlでキーと指定して、view(またはmodel)でslugをキーに値を取得する
(slugはurlに入力できる値であり、slugフィールドにはインデックスがあるため高速でレコードを取得できる)

  • urls.pyの定義
urlpatterns = [
    path("posts/in/<slug:slug>/",views.SingleGroup.as_view(),name="single"),
]
  • views.pyの定義
class SingleGroup():

    def get(self, request, *args, **kwargs):
        group = get_object_or_404(Group,slug=self.kwargs.get("slug"))

また、slugifyに値を挿入するには、文字列をslugifyの形式に変換することが必要
そのためには、django.utils.text.slugifyを利用する

from django.utils.text import slugify

slugify('aa bb')
#aa-bb

slugify('aabb')
#aabb

slugify('Aabb')
#aabb

slugify('abcあいうえお')
# abc

slugify('abcあいうえお', allow_unicode=True)
#abcあいうえお

slugify('abc(全角スペース)あいうえお', allow_unicode=True)
#abc-あいうえお

slugify('abc葡萄', allow_unicode=True)
#abc葡萄

slugify('abc         葡萄', allow_unicode=True)
# abc-葡萄

関連記事

現役エンジニアがDjangoに関する本を5つ紹介
現役エンジニアがDjangoに関する本を5つ紹介
WindowsでDjango、Anaconda、VSCodeのインストールとDjangoを開発する環境の構築をする
WindowsでDjango、Anaconda、VSCode…
MacでDjango、Anaconda、VSCodeのインストールとDjangoを開発する環境の構築をする
MacでDjango、Anaconda、VSCodeのインス…
DjangoのFormに初期値を設定する方法
DjangoのFormに初期値を設定する方法
DjangoでModelのsave前後で処理を行うSignalのpre_save, post_saveの使い方
DjangoでModelのsave前後で処理を行うSigna…
Djangoのモデルの各フィールドについて解説(AutoField, BigAutoField, BooleanField, CharField, TextField, DateField, EmailField, IntegerField)
Djangoのモデルの各フィールドについて解説(AutoFi…

Primary Sidebar

人気記事

  • 1
    PyCharm,IntelliJのおすすめプラグイン一覧
  • no image 2
    Python未経験だが、フリーランスの案件に採用さ…
  • 3
    ITエンジニアとしてスキルを高めるためのUdemy講…
  • 4
    アメリカのシリコンバレーでプログラミングを無…

特集記事

  • 1
    Cursorの使用のポイントとコツ(コード補完、イ…
  • 2
    ITエンジニアとしてスキルを高めるためのUdemy講…

目次

1 SlugFieldの設定と挿入のしかた
2 関連記事
StartCode ロゴ
AI時代のエンジニアを最速で育てる
法人向けIT研修で即戦力を育成しています。詳しくはお問い合わせください。
▶ 詳細はこちら
Django講座
【Udemy】Django入門講座(0からDjangoを学習: Python講座つき)
受講生6500人ほどの人気講座。<strong>View, Template, Model, Cla...
詳細 ▶

Footer

利用規約