モデルの設定

モデルの設定

前章ではモデルの各種フィールドについて見ていきました。
モデルで作成するClassには様々な設定を付与することができます。
それぞれ見ていきましょう。

str

models.pyのClassに__str__を記述することで、そのデータを参照した時の表示名を変更することができます。


class Article(models.Model):

    title = models.CharField(max_length=100, verbose_name='タイトル')

    def __str__(self):
        return self.title

この中で、__str__関数で指定したタイトルが、このデータの表示名になります。
データの各フィールドにはselfからアクセスできます。
文字列以外をreturnに指定するとエラーになるので注意しましょう。

こうすることで管理画面などでこのデータを参照した時にArticleのtitleが返されるので、
すぐにどの記事が判別することができるようになります。

Meta

models.pyのClass内に別のMetaClassを指定することができます。
Metaを追加することで、テーブルの表示名を変更したり、実際のテーブル名を指定することができます。


class NewsArticle(models.Model):

    title = models.CharField(max_length=100, verbose_name='タイトル')

    class Meta:
        db_table = 'news_article'
        verbose_name_plural = 'ニュース記事'

db_table

MetaClassで記述するdb_tableはテーブル名を変更することができます。
ここで明示的に記述しておくことで実際のデータベースをのぞいた時などに、どのデータかわかりやすくなります。

verbose_name_plural

verbose_name_pluralはテーブルの表示名を変更することができます。
Djangoの管理画面などでデータベースのテーブルを一覧表示するとき、デフォルトでは、Class名が使用されますが、こちらを使用することで、日本語名に変更できたりします。

MetaClassではその他様々な情報を変更できますが、上級者向けなものも多いのでまずはこの主要な2点だけでも覚えておきましょう。