为什么我不能将类Meta作为Django Model Class的属性来访问?

时间:2013-09-19 14:41:53

标签: python django django-models

在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类有何不同?

我做了研究,并没有在这里提出任何类似的问题。 如果我错过了,请原谅。

提前感谢您的帮助。

2 个答案:

答案 0 :(得分:22)

Meta属性由元类改变。

尝试:

SomeDjangoModel._meta

答案 1 :(得分:2)

在类上定义的Meta属性是一种定制模式,用于关联和包含在创建类型时类'metaclass将会内省的其他数据。

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