回答:
代わりに行うのでBook.__class__.__name__
、あなたが本のオブジェクトの上にそれを行う場合は、クラス自体に、そしてbook_object.__class__.__name__
あなたの「ブック」を与える(すなわちモデルの名前)
上記の答えで示唆されているように、あなたは使うことができますstr(Book._meta)
。
この質問はかなり古いですが、複数のアプリから同じモデル名を使用している可能性があるため、次の情報が役に立ちました(Django 1.11でテスト済みですが、古いバージョンでも機能する可能性があります...)。
本が次の場所にあると仮定しmy_app
ます。
print(Book._meta.object_name)
# Book
print(Book._meta.model_name)
# book
print(Book._meta.app_label)
# my_app
2.2.3
も動作しています。
クラス名を使って、
str(Book._meta)
Book.__class__.__name__ -> this will give you the ModelBase
str(self.model._meta)
私が探していたものです。もう一方は親クラスをください。
Book._meta.object_name
かBook._meta.model_name
。あなたにもアプリケーション名が必要な場合はその後、それが経由してアクセス可能ですBook._meta.app_label
モデルのMetaクラスからモデル名を取得することもできます。これは、モデルクラス自体とそのインスタンスで機能します。
# Model definition
class Book(models.Model):
# fields...
class Meta:
verbose_name = 'book'
verbose_name_plural = 'books'
# Get some model
book = Book.objects.first()
# Get the model name
book._meta.verbose_name
設定verbose_name
とverbose_name_plural
オプションです。Djangoはモデルクラスの名前からこれらの値を推測します(管理サイトでこれらの値が使用されていることに気付いたかもしれません)。
https://docs.djangoproject.com/en/3.0/ref/models/options/#verbose-name