Почему я не могу получить доступ к классу Meta в качестве атрибута класса Django Model?
В Python я могу определить:
class Person(object):
name = "Easwar"
age = 35
sex = "male"
class Occupation:
name = "my_job"
Я могу получить к нему доступ
>> p = Person()
>> p.Occupation.name
>> # prints "my_job"
Однако в Django, если у меня есть модель, определенная с классом Meta внутри, я не могу этого сделать
>>> m = SomeDjangoModel()
>>> m.Meta
>>> # prints AttributeError!
Почему это?
Каким образом внутренний класс Django Meta отличается от обычного класса Python?
Я исследовал это и не придумал ничего подобного.
Пожалуйста, извините меня, если я пропустил это.
Заранее благодарим за помощь.
Ответы
Ответ 1
А Meta
атрибут, определенный в классе, представляет собой шаблон на заказ, который связывает и содержит дополнительные данные, которые будут интродуцированы с помощью метакласса класса при создании типа.
Вы можете просмотреть метакласмент ModelBase
и посмотреть, как он использует атрибут Meta
для настройки результирующего модельного класса, который создается.
Ответ 2
Атрибут Meta изменяется метаклассом.
Try:
SomeDjangoModel._meta