23

在 Python 中,我可以定义:

class Person(object):
   name = "Easwar"
   age = 35
   sex = "male"

   class Occupation:
      name = "my_job"

然后我可以访问它

>> p = Person()
>> p.Occupation.name
>> # prints "my_job"

但是在 Django 中,如果我有一个用 Class Meta 定义的模型,我不能这样做

>>> m = SomeDjangoModel()
>>> m.Meta
>>> # prints AttributeError!

为什么是这样 ?Django 的内部 Meta 类与常规 Python 类有何不同?

我对此进行了研究,但没有提出任何类似的问题。如果我错过了,请原谅。

在此先感谢您的帮助。

4

2 回答 2

39

Meta 属性由元类更改。

尝试:

SomeDjangoModel._meta
于 2013-09-19T14:45:05.527 回答
4

在类上定义的Meta属性是一种定制模式,用于关联和包含将在创建类型时由类的元类自省的附加数据。

您可以查看ModelBase元类并查看它如何使用该Meta属性来配置正在构建的结果模型类。

于 2013-09-19T14:48:37.717 回答