Agile育成ブログ
未来を変える喜びを
Django

def __str__(self)


Warning: count(): Parameter must be an array or an object that implements Countable in /home/xs638785/agile-software.site/public_html/wp-content/plugins/rich-table-of-content/functions.php on line 490

def __str__(self)とは

def __str__(self)により、管理画面に表示されるモデル内のデータ(レコード)を判別するための、名前(文字列)を定義することができます。

def __str__(self)がない場合、管理画面の表示から、データを判別することができないため、管理が難しくなります。

models.pyでのdef __str__(self)設定方法

models.pyでのdef __str__(self)の設定方法を解説します。

models.py内でモデル、フィールドの定義ができたら、そのモデル内に以下のようにdef__str__(self)を追記します。

from django.db import models
from django.utils import timezone

class Post(models.Model):
    title = models.CharField(max_length=200)
    text = models.TextField()
    created_date = models.DateTimeField(default=timezone.now)

    def __str__(self):
        return self.title

上記サンプルでは、Postモデル内にtitle、text、created_dateフィールドを定義しており、def __str__(self)内では、titleフィールドを返すようにしています。

このreturnで設定するフィールド項目が管理画面でそのデータ(レコード)を判別できるように表示されます。

selfは、そのオブジェクト自身を指しております。

管理画面での表示

それでは管理画面でどのように表示されるのか見ていきましょう。

まず__str__(self)がない場合ですが、以下のように表示されるため、Postモデル内のデータを判別することができません。

次に__str__(self)をmodels.pyに追記した画面です。
以下画面表示を見ると、Postモデルのタイトルフィールドが表示されているので、どのデータが何なのか判別が簡単になりました。

まとめ

このようにmodels.pyに__str__(self)を指定するのは、管理画面でデータの判別をしやすくするという重要な役割があります。

You cannot copy content of this page