Saltar al contenido

¿Cómo puedo obtener el nombre del modelo o el tipo de contenido de un objeto Django?

Solución:

Puede obtener el nombre del modelo del objeto de esta manera:

self.__class__.__name__

Si prefiere el tipo de contenido, debería poder obtenerlo así:

from django.contrib.contenttypes.models import ContentType
ContentType.objects.get_for_model(self)

El método get_for_model hace algunas cosas elegantes, pero hay algunos casos en los que es mejor no usar esas cosas elegantes. En particular, digamos que desea filtrar un modelo vinculado a ContentType, ¿tal vez a través de una clave externa genérica? La pregunta aquí era para qué usar model_name en:

content_type = ContentType.objects.get (model = model_name)

Usar Foo._meta.model_name, o si tienes un Foo objeto, entonces obj._meta.model_name es lo que estás buscando. Entonces, puedes hacer cosas como

Bar.objects.filter(content_type__model=Foo._meta.model_name)

Ésta es una forma eficaz de filtrar Bar tabla para devolverle los objetos que enlazan con el Foo tipo de contenido a través de un campo llamado content_type.

¡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 *