tengo algunos modelos de Django, digoUso de `issubclass()` con modelos de Django
class Foo(models.Model):
class Meta:
abstract = True
class Bar(Foo)
pass
me gustaría ser capaz de encontrar todos los modelos que heredan de Foo, con el fin de realizar una tarea con ellos. Debe ser fácil, como
from django.db import models
from myapp.models import Foo
for model in models.get_models():
if issubclass(model, Foo):
do_something()
Por desgracia, esto no funciona, ya que issubclass(Bar, Foo)
informes False
, probablemente como resultado del funcionamiento interno de la metaclase Django que inicializa los modelos.
¿Hay alguna forma de comprobar si un modelo de Django es un descendiente de un modelo abstracto de Django?
Por favor, no sugiera pato escribir como la solución. En este caso, realmente me gustaría saber si existe una relación de subclase.
Formulándome la misma pregunta ... Después de muchas pruebas e introspección de código, supongo que no parece posible, ya que los modelos abstractos son callables, y los objetos hijo no tienen ningún atributo o método que se ajuste a esto necesariamente. – Oleiade
Parece extraño ... Acabo de crear una nueva aplicación django en un virtualenv, y su código está funcionando, mi 'do_something()' es simplemente un 'modelo de impresión' y funciona. resultado:. ¿Estás seguro de que tu problema proviene del resumen? FYI Estoy usando django 1.3.1 –
También trabajando para mí en Django 1.3.1 – Brandon