2010-01-17 4 views
0

У меня есть базовый класс A. Два производных классов B, C. Теперь у меня есть глобальный класс ведьма содержит много-ко-многим отношению к объекту А.Фильтрация унаследованных объектов

Class D: 
    aObjects : ManyToMany("A") 

как мог знать реальный объект возврата фильтра запроса в объекте D. I mean: d.objects.get(id=5) Теперь d имеет n объектов класса A, но они являются комбинацией A, B или C. Как получить только те, которые имеют тип B в запросе.

Заранее спасибо.

ответ

0

Там нет никакого способа сделать это автоматически. В документации достаточно ясно, что невозможно указать из экземпляра базового класса, должен ли он «фактически» быть экземпляром производного класса.

Единственное, что нужно сделать, это определить поле базового класса, которое показывает, какой производный тип оно есть, и установить это автоматически в методе save() различных производных классов. Затем вы можете фильтровать значение этого поля.

0

Будет ли это работает для вас

filter(lambda x: isinstance(x, B), d.objects.get(id=5))

Смежные вопросы