Django管理サイトのテーブル一覧表示などでxxxObjectではなく名前を表示する方法
2016/06/30 23:41
  • はじめに

    Djangoプロジェクトで、例えばブログを構築したとします。
    ブログ記事の保存テーブルはArticle, カテゴリはArticleCategoryテーブルとした時に
    Django管理画面ではArticleObjectだったり、ArticleCategoryObjectと表示され具体的に
    それが何なのか全然わからず困っていましたが、解決方法がありました…(当たり前

    それでは、いきなりですがテーブル構成から紹介していきます。(あくまでサンプル

    テーブル構成

    models.py

    # Articleテーブル
    class Article(models.Model):
        subject = models.CharField(max_length=255)
        description = models.CharField(max_length=255, blank=True)
        content = models.TextField(blank=False)
        category = models.ForeignKey('ArticleCategory')
        created_at = models.DateTimeField(auto_now_add=True)
        updated_at = models.DateTimeField(auto_now=True)
    
    
    # カテゴリテーブル
    class ArticleCategory(models.Model):
        name = models.CharField(max_length=255)
    

    これだけだと、まだArticleObject, ArticleCategoryObjectと表示されていまいます。
    そこで、以下のように "__str__(self)" を追加していきます。


    # Articleテーブル
    class Article(models.Model):
        subject = models.CharField(max_length=255)
        description = models.CharField(max_length=255, blank=True)
        content = models.TextField(blank=False)
        category = models.ForeignKey('ArticleCategory')
        created_at = models.DateTimeField(auto_now_add=True)
        updated_at = models.DateTimeField(auto_now=True)
    
        # 追加行
        def __str__(self):
            return u'%s' % self.subject # subjectを管理画面の一覧に表示する
    
    
    # カテゴリテーブル
    class ArticleCategory(models.Model):
        name = models.CharField(max_length=255)
    
        # 追加行
        def __str__(self):
            return u'%s' % self.name # nameを管理画面の一覧に表示する
    

    上記のようにすることで、各一覧に指定のカラムの値が表示されるようになります。


    人気ブログランキングへ ブログランキング・にほんブログ村へ
    ↑応援よろしくお願いします!m(_ _)m

  • <2016/06/30 23:41>
  • Python
  • Django管理画面一覧Object名前
  • 新しい記事へ
    CentOS6環境にpyenv, mod_wsgi, apacheを入れ、djangoを動かしてみた記録

    古い記事へ
    来週末は一時帰国

profile picture

自己紹介的な何か

@wkmettyでついったーやってます。時々。 6年間勤めたゲーム会社を2018年2月に退職しフリーランスのプログラマに。 WordPress Core, WP-CLI コントリビューター。 お仕事募集中です。