Jawaban yang mengklaim model Django Meta
dan metaclasses "sangat berbeda" adalah jawaban yang menyesatkan.
Konstruksi objek kelas model Django (artinya objek yang mewakili definisi kelas itu sendiri; ya, kelas juga objek) memang dikendalikan oleh metaclass yang disebut ModelBase
, Anda dapat melihat kode itu di sini:
https://github.com/django/django/blob/master/django/db/models/base.py#L61
Dan salah satu hal yang ModelBase
dilakukan adalah membuat _meta
atribut pada setiap model Django yang berisi mesin validasi, detail lapangan, save logic, dan sebagainya. Selama operasi ini, hal-hal yang ditentukan di bagian dalam modelMeta
kelas dibaca dan digunakan dalam proses itu.
Jadi, sementara ya, dalam arti Meta
dan metaclasses adalah 'hal' yang berbeda, dalam mekanisme konstruksi model Django mereka terkait erat; memahami bagaimana mereka bekerja bersama akan memperdalam wawasan Anda menjadi keduanya sekaligus.
Ini mungkin menjadi sumber informasi yang bermanfaat untuk lebih memahami bagaimana model Django menggunakan metaclasses.
https://code.djangoproject.com/wiki/DevModelCreation
Dan ini mungkin membantu juga jika Anda ingin lebih memahami bagaimana benda bekerja secara umum.
https://docs.python.org/3/reference/datamodel.html