1

我正在尝试使用以下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从这个上下文中以编程方式获取?还有其他方法可以做到这一点吗?

4

1 回答 1

2

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

于 2013-02-04T18:55:56.857 回答