Tadeck'in yukarıdaki Django cevabına bağlı olarak, Django'da 'class Meta:' kullanımı sadece normal Python'dur.
İç sınıf, sınıf örnekleri arasında paylaşılan veriler için uygun bir ad alanıdır (bu nedenle 'meta veri' için Meta adıdır, ancak istediğiniz herhangi bir şey diyebilirsiniz). Django'da genellikle salt okunur yapılandırma öğeleri olsa da, değiştirmenizi engelleyecek hiçbir şey yoktur:
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
Bunu doğrudan Django'da da inceleyebilirsiniz:
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>}
Bununla birlikte, Django'da , bir model oluşturulduğunda model tarafından oluşturulan _meta
bir Options
nesne olan özelliği keşfetmek istemeniz daha olasıdır metaclass
. Tüm Django sınıfı 'meta' bilgilerini burada bulabilirsiniz. Django'da, Meta
sadece _meta
Options
nesneyi oluşturma sürecine bilgi aktarmak için kullanılır .