我正在尝试使用以下配置覆盖模型的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
?还有其他方法可以做到这一点吗?
答案 0 :(得分:2)
根据django来源,app_label
是从__module__
(https://github.com/django/django/blob/master/django/db/models/base.py)属性中提取的。源使用元类,并从传递给该元类定义的参数attrs中提取__module__
。实际意义上超出了我的意思,但是对于所有意图和目的,在这种情况下app_label
和__module__
看起来都是一样的。