LINUX.ORG.RU

Получение всех объектов наследованных от meta класса

 ,


0

2

Пишу тут на коленке...

class MetaType(models.Model):
    name = models.CharField(max_length=80)
    parent_type = models.ForeignKey('self', blank=True, null=True, related_name='child_set')

    def __unicode__(self):
        return self.name

    class Meta:
        abstract = True

class DeviceType(MetaType):
    pass

class DeviceTypeAdmin(admin.ModelAdmin):
    list_display = ('name', )

class ToolType(MetaType):
    pass

class ToolTypeAdmin(admin.ModelAdmin):
    list_display = ('name', )

В общем я хочу просто взять из базы все объекты, модели которых были наследованы от MetaType.

Каким образом это реализовать не знаю

def index(request):
    typedevs = MetaType._meta.get_all_related_objects()
    t = loader.get_template("start.html")
    c = Context({'models':typedevs})
    return HttpResponse(t.render(c))

Но это не то. Уровень моих познаний крайне низок, поэтому не могу предумать как это правильно(и неправильно) реализовать.

★★★★★

Может, так

class Base : pass

class Der1(Base) : pass

class Der2 (Base): pass

class Derr (Der1) : pass

In [9]: Base.__subclasses__()
Out[9]: [__main__.Der1, __main__.Der2]

In [10]: Base.__subclasses__()[0].__subclasses__()
Out[10]: [__main__.Derr]

И проходить по ним рекурсивно?

keyran ★★ ()
Ответ на: комментарий от keyran

Спасибо , __subclasses__() теперь лучше.

Тут идея скорее сделать оглавление по типам приборов.С одной стороны хочется чтобы оно было настраиваемое (т.е. как там что называется пользователь сам вводил), но при этом я понимаю что часто это вызывать наверное не надо.

DR_SL ★★★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.