Extendiendo la respuesta Django de Tadeck anterior, el uso de la 'clase Meta:' en Django también es normal en Python.
La clase interna es un espacio de nombres conveniente para datos compartidos entre las instancias de clases (de ahí el nombre Meta para 'metadatos' pero puede llamarlo como quiera). Mientras que en Django es generalmente de sólo lectura cosas configuración, no hay nada que le impida cambiarlo:
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
se puede explorar en Django directamente también por ejemplo:
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>}
Sin embargo, en Django es más es probable que desee explorar el atributo _meta, que es un objeto Opciones creado por la metaclase del modelo cuando se crea un modelo. Ahí es donde encontrarás toda la información de metadatos de la clase django. En Django, Meta solo se usa para pasar información al proceso de creación del objeto _meta Options.
Título pregunta sobre Python meta, pero parece cuestión de preguntar acerca de Django meta - que se lo preguntas acerca? – ckhan