在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类有何不同?
我做了研究,并没有在这里提出任何类似的问题。 如果我错过了,请原谅。
提前感谢您的帮助。
答案 0 :(得分:22)
Meta属性由元类改变。
尝试:
SomeDjangoModel._meta
答案 1 :(得分:2)
在类上定义的Meta
属性是一种定制模式,用于关联和包含在创建类型时类'metaclass将会内省的其他数据。
您可以查看ModelBase
元类,并查看它如何使用Meta
属性配置正在构造的结果模型类。