Saltar al contenido

¿Cómo funciona la clase Meta de Django?

Nuestro grupo especializado pasados ciertos días de investigación y recopilación de de información, obtuvieron la solución, esperamos que te sea útil en tu trabajo.

Solución:

Estás haciendo una pregunta sobre dos cosas diferentes:

  1. Meta clase interna en modelos Django:

    Este es solo un contenedor de clase con algunas opciones (metadatos) adjuntas al modelo. Define cosas tales como los permisos disponibles, el nombre de la tabla de la base de datos asociada, si el modelo es abstracto o no, las versiones singular y plural del nombre, etc.

    Una breve explicación está aquí: Django docs: Models: Meta options

    La lista de meta opciones disponibles está aquí: Django docs: Model Meta options

    Para la última versión de Django: Django docs: Model Meta options

  2. Metaclase en Python:

    La mejor descripción está aquí: ¿Qué son las metaclases en Python?

Ampliando la respuesta Django de Tadeck anterior, el uso de ‘clase Meta:’ en Django también es Python normal.

La clase interna es un espacio de nombres conveniente para los datos compartidos entre las instancias de la clase (de ahí el nombre Meta para ‘metadatos’, pero puede llamarlo como quiera). Mientras que en Django es generalmente material de configuración de solo lectura, 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

También puede explorarlo directamente en Django, 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': ,
 'verbose_name_plural': 

Sin embargo, en Django es más probable que desee explorar el _meta attribute que es un Options objeto creado por el modelo metaclass cuando se crea un modelo. Ahí es donde encontrará toda la información ‘meta’ de la clase Django. En Django, Meta solo se utiliza para pasar información al proceso de creación del _metaOptions objeto.

de Django Model clase maneja específicamente tener un attribute nombrada Meta que es una clase. No es una cosa general de Python.

Las metaclases de Python son completamente diferentes.

Te mostramos las reseñas y valoraciones de los usuarios

Al final de la web puedes encontrar las ilustraciones de otros gestores de proyectos, tú igualmente tienes el poder insertar el tuyo si te gusta.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *