Antworten, die Django-Modelle beanspruchen Meta
und Metaklassen seien "völlig unterschiedlich", sind irreführende Antworten.
Die Konstruktion von Django Modell Klassenobjekten (das das Objekt zu sagen ist , die für die Klassendefinition steht selbst, ja, Klassen werden auch Objekte) sind in der Tat von einem metaclass gesteuert genannt ModelBase
, können Sie diesen Code hier sehen:
https://github.com/django/django/blob/master/django/db/models/base.py#L61
Und eines der Dinge, ModelBase
die Sie _meta
tun müssen, ist, das Attribut für jedes Django-Modell zu erstellen, das Validierungsmaschinerie, Felddetails, Speicherlogik usw. enthält. Während dieses Vorgangs das Material, das im Inneren des Modells angegeben istMeta
Klasse gelesen und in diesem Prozess verwendet.
Während ja, in Meta
gewissem Sinne und Metaklassen unterschiedliche „Dinge“ sind, sind sie innerhalb der Mechanik des Django-Modellbaus eng miteinander verbunden. Wenn Sie verstehen, wie sie zusammenarbeiten, vertiefen Sie Ihren Einblick in beide gleichzeitig.
Dies könnte eine hilfreiche Informationsquelle sein, um besser zu verstehen, wie Django-Modelle Metaklassen verwenden.
https://code.djangoproject.com/wiki/DevModelCreation
Dies kann auch hilfreich sein, wenn Sie besser verstehen möchten, wie Objekte im Allgemeinen funktionieren.
https://docs.python.org/3/reference/datamodel.html