เมื่อเพิ่มคำตอบ Django ของ Tadeck ด้านบนการใช้ 'class Meta:' ใน Django ก็เป็นเพียง Python ธรรมดาเช่นกัน
คลาสภายในเป็นเนมสเปซที่สะดวกสบายสำหรับข้อมูลที่ใช้ร่วมกันระหว่างอินสแตนซ์ของคลาส (ดังนั้นชื่อ Meta สำหรับ 'ข้อมูลเมตา' แต่คุณสามารถเรียกมันว่าอะไรก็ได้ที่คุณต้องการ) ขณะที่อยู่ใน Django มันเป็นเรื่องของการกำหนดค่าแบบอ่านอย่างเดียวไม่มีอะไรจะหยุดคุณเปลี่ยน:
In [1]: class Foo(object):
...: class Meta:
...: metaVal = 1
...:
In [2]: f1 = Foo()
In [3]: f2 = Foo()
In [4]: f1.Meta.metaVal
Out[4]: 1
In [5]: f2.Meta.metaVal = 2
In [6]: f1.Meta.metaVal
Out[6]: 2
In [7]: Foo.Meta.metaVal
Out[7]: 2
คุณสามารถสำรวจใน Django ได้โดยตรงเช่น:
In [1]: from django.contrib.auth.models import User
In [2]: User.Meta
Out[2]: django.contrib.auth.models.Meta
In [3]: User.Meta.__dict__
Out[3]:
{'__doc__': None,
'__module__': 'django.contrib.auth.models',
'abstract': False,
'verbose_name': <django.utils.functional.__proxy__ at 0x26a6610>,
'verbose_name_plural': <django.utils.functional.__proxy__ at 0x26a6650>}
อย่างไรก็ตามใน Django คุณมีแนวโน้มที่จะต้องการสำรวจ_meta
คุณสมบัติซึ่งเป็นOptions
วัตถุที่สร้างขึ้นโดยโมเดลmetaclass
เมื่อสร้างโมเดล นั่นคือที่ที่คุณจะพบข้อมูล 'meta' ของ Django ทั้งหมด ใน Django Meta
ใช้เพื่อส่งผ่านข้อมูลไปยังกระบวนการสร้าง_meta
Options
วัตถุ