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