Las respuestas que afirman que el modelo Meta
y las metaclases de Django son "completamente diferentes" son respuestas engañosas.
La construcción de los objetos de clase modelo de Django (es decir, el objeto que representa la definición de clase en sí; sí, las clases también son objetos) de hecho están controlados por una metaclase llamada ModelBase
, puede ver ese código aquí:
https://github.com/django/django/blob/master/django/db/models/base.py#L61
Y una de las cosas que ModelBase
hace es crear el _meta
atributo en cada modelo de Django que contiene maquinaria de validación, detalles de campo, lógica de guardado, etc. Durante esta operación, las cosas que se especifican en la Meta
clase interna del modelo se leen y usan dentro de ese proceso.
Entonces, aunque sí, en cierto sentido Meta
y las metaclases son 'cosas' diferentes, dentro de la mecánica de la construcción del modelo Django están íntimamente relacionadas; Comprender cómo funcionan juntos profundizará su comprensión de ambos a la vez.
Esta podría ser una fuente útil de información para comprender mejor cómo los modelos Django emplean metaclases.
https://code.djangoproject.com/wiki/DevModelCreation
Y esto también podría ayudar si desea comprender mejor cómo funcionan los objetos en general.
https://docs.python.org/3/reference/datamodel.html