2011-03-18 16 views
5

Django usa la clase Meta para obtener mucha información adicional sobre el objeto. Sin embargo, almacenan esta información en un objeto '_meta' que al nombrar la convención es privado.¿Es seguro acceder a ._meta directamente en su aplicación django?

En todo el administrador django (y en otros lugares) veo cosas como opts = model._meta y luego usan las diferentes opciones como app_label y verbose_name.

¿Puedo tener confianza en el acceso a ._meta y me aseguro de que no cambiará en el futuro, o me conviene crear un mixin 'accessor' o algo que acceda a la ._meta en un solo lugar, por lo que si alguna vez lo hace cambio solo tengo que actualizar una cosa?

+0

Estilísticamente hablando, siempre es mejor crear una interfaz para algo que no mantiene por ese motivo. :) – mway

Respuesta

4

Uso _meta con frecuencia y no he tenido ningún problema hasta el momento. Puede ver en la documentación de django un ejemplo de ellos usando también here, así que he sentido que está más o menos bien que hacer. Solo pise con cuidado y escriba buenas pruebas para que sepa de cualquier problema cuando actualice su versión de django más adelante en el futuro.

2

Uso _meta en varios proyectos en los que deseo tener acceso genérico a información que de lo contrario no proporciona la API. Creo que probablemente estés bien la mayor parte del tiempo ya que Django es bastante estable. Probablemente sea una buena idea cubrir el uso de _meta en las pruebas de su unidad.

Cuestiones relacionadas