从Meta子类中获取模型的app_label

时间:2013-02-04 18:07:47

标签: python django

我正在尝试使用以下配置覆盖模型的db_table

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

但是,我希望以编程方式访问app_label

一般情况下,我可以这样做:MyModel._meta.app_label。但是,我从Meta旧式课程范围内获得该属性没有任何运气。

  • self.app_label不起作用,因为self似乎不存在于该上下文中。
  • MyModel._meta.app_label也不起作用,可能是因为MyModel尚未定义。

如何在此上下文中以编程方式获取app_label?还有其他方法可以做到这一点吗?

1 个答案:

答案 0 :(得分:2)

根据django来源,app_label是从__module__https://github.com/django/django/blob/master/django/db/models/base.py)属性中提取的。源使用元类,并从传递给该元类定义的参数attrs中提取__module__。实际意义上超出了我的意思,但是对于所有意图和目的,在这种情况下app_label__module__看起来都是一样的。