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)を指定するのは、管理画面でデータの判別をしやすくするという重要な役割があります。