1

db_table次のような構成でモデルをオーバーライドしようとしています。

class MyModel(models.Model):
    class Meta:
        db_table = "app_label_table_name"

app_labelただし、プログラムでアクセスしたいのですが。

一般的に、私は次のことができますMyModel._meta.app_label。ただし、Metaの古いスタイルのクラススコープ内からそのプロパティを取得することはできません。

  • self.app_labelselfそのコンテキストには存在しないように見えるため、機能しません。
  • MyModel._meta.app_labelおそらくMyModelまだ定義されていないため、どちらも機能しません。

app_labelこのコンテキスト内からプログラムで取得するにはどうすればよいですか?これを行う他の方法はありますか?

4

1 に答える 1

2

djangoのソースによると、は(https://github.com/django/django/blob/master/django/db/models/base.py)属性app_labelから取得されます。ソースはメタクラスを使用しており、そのメタクラス定義に渡された引数attrsからをプルします。それが実際に意味することは私を超えていますが、すべての意図と目的のために、それはどのように見え、この場合も同じになります。__module____module__app_label__module__

于 2013-02-04T18:55:56.857 に答える