Відповіді, які стверджують, що моделі Meta
і метакласи Джанго є "абсолютно різними", є хибними відповідями.
Побудова об'єктів класу модель Джанго (тобто об'єкт, який позначає саме визначення класу; так, класи також є об'єктами) дійсно контролюється метакласом, який називається ModelBase
, цей код ви можете побачити тут:
https://github.com/django/django/blob/master/django/db/models/base.py#L61
І однією з речей ModelBase
є створення _meta
атрибута для кожної моделі Django, яка містить механізм перевірки, деталі поля, збереження логіки тощо. Під час цієї операції матеріали, які вказані у внутрішньому Meta
класі моделі, читаються та використовуються в рамках цього процесу.
Отже, хоча так, у певному сенсі Meta
і метакласи - це різні "речі", всередині механіки побудови моделі Джанго вони тісно пов'язані; розуміння того, як вони працюють разом, поглибить ваше розуміння обох відразу.
Це може бути корисним джерелом інформації, щоб краще зрозуміти, як моделі Джанго використовують метакласи.
https://code.djangoproject.com/wiki/DevModelCreation
І це також може допомогти, якщо ви хочете краще зрозуміти, як працюють об'єкти взагалі.
https://docs.python.org/3/reference/datamodel.html