Почему я не могу получить доступ к классу Meta в качестве атрибута класса Django Model? - программирование
Подтвердить что ты не робот

Почему я не могу получить доступ к классу 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?

Я исследовал это и не придумал ничего подобного. Пожалуйста, извините меня, если я пропустил это.

Заранее благодарим за помощь.

4b9b3361

Ответ 1

А Meta атрибут, определенный в классе, представляет собой шаблон на заказ, который связывает и содержит дополнительные данные, которые будут интродуцированы с помощью метакласса класса при создании типа.

Вы можете просмотреть метакласмент ModelBase и посмотреть, как он использует атрибут Meta для настройки результирующего модельного класса, который создается.

Ответ 2

Атрибут Meta изменяется метаклассом.

Try:

SomeDjangoModel._meta