использовать современное соединение
SELECT Professor.firstName, Professor.lastName
FROM Professor join "Group" g on
g.professorCode = Professor.professorCode
where g.sessionCode in( 32003,12004 )
AND g.sigle in( 'INF1130', 'INF1110','INF3180','INF2110')
group by Professor.firstName, Professor.lastName
having count( distinct sigle )=4
В настоящее время в Django существуют две формы наследования - MTI (наследование таблиц моделей) и ABC (абстрактные базовые классы).
Я написал учебник о том, что происходит под капотом.
Вы также можете сослаться на официальные документы по модели наследования .
Я думаю, что ОП задает вопрос об наследовании одной таблицы, как определено здесь :
Реляционные базы данных не поддерживают наследование, поэтому при отображении объектов в базы данных мы имеем рассмотреть, как представить наши хорошие структуры наследования в реляционных таблицах. При отображении в реляционную базу данных мы стараемся свести к минимуму объединения, которые можно быстро смонтировать при обработке структуры наследования в нескольких таблицах. Наследование в одной таблице отображает все поля всех классов структуры наследования в одну таблицу.
То есть, одна таблица базы данных для всей иерархии классов сущностей. Джанго не поддерживает такого рода наследство.
Я думаю, вы можете сделать что-то похожее на это.
Я должен сам реализовать решение этой проблемы, и вот как я ее решил:
class Citrus(models.Model)
how_acidic = models.PositiveIntegerField(max_value=100)
skin_color = models.CharField()
type = models.CharField()
class TangeloManager(models.Manager)
def get_query_set(self):
return super(TangeloManager, self).get_query_set().filter(type='Tangelo')
class Tangelo(models.Model)
how_acidic = models.PositiveIntegerField(max_value=100)
skin_color = models.CharField()
type = models.CharField()
objects = TangeloManager()
class Meta:
# 'appname' below is going to vary with the name of your app
db_table = u'appname_citrus'
Это может иметь некоторые проблемы с блокировкой ... Я не совсем уверен, как Джанго справляется с этим с моей головы. Кроме того, я на самом деле не тестировал приведенный выше код, это исключительно для развлекательных целей, чтобы надеяться, что вы на правильном пути.
это может быть полезно: https://github.com/craigds/django-typed-models Это выглядит как реализация реализации наследования отдельных таблиц, но имеет ограничение, которое подклассы могут не имеет никаких дополнительных полей.
Существует также ветвь, которая решает проблему невозможности создания дополнительных полей: https://github.com/KrzysiekJ/django-typed-models
обновление: Я полагаю, что ответвление, возможно, было объединено в
. Это недавнее обсуждение в списке рассылки разработчиков django о STI: https://groups.google.com/forum/#!msg/django -developers / -UOM8HNUnxg / 6k34kopzerEJ