Что-то я совершенно не понимаю как работать с этой ORM. Есть список типов объектов. Он нужен для того чтобы автоматически подбирать нужное представление вслепую, когда мы заранее не знаем что, где и как придется отображать.
class ObjectType(models.Model):
name = models.CharField(max_length=32)
table_name = models.CharField(max_length=32)
class_name = models.CharField(max_length=32)
template_name = models.CharField(max_length=64, null=True, blank=True)
Таблица с объектами, которая содержит ключ к самой себе и к типу объекта, чтобы впоследствии можно было отобразить разные элементы с общим parent.
class FObject(models.Model):
parent = models.ForeignKey('self', null=True, blank=True, related_name='object_parent')
object_type = models.ForeignKey(ObjectType)
created = models.DateTimeField(auto_now_add=True)
owner = models.ForeignKey('self', null=True, blank=True, related_name='object_owner')
Мне, по-хорошему, нужно получить объединенные таблицы, а не одну модель, отфильтрованную по полю другой. Предположим, нужно отобразить все объекты с parent=NULL. Для этого сначала нужно выбрать имена шаблонов, имена классов ( чтобы потом сделать что-то типа mysite.blog.models.__dict__[object_type.class_name] ), т.е.
ObjectType.objects.filter(fobject__parent=None)
FObject.objects.filter(fobject__parent=None)
Хотя их можно было выбрать все сразу:
SELECT * FROM fobject JOIN objecttype ON fobject.object_type_id=objecttype.id
Как быть?