Я делаю страницу истории для веб-сайта.Структура моих классов примерно такая:
class Person(models.Model):
name = models.CharField(max_length=100)
type = models.CharField(max_length=30)
class History(models.Model):
date = models.DateField(max_length=100)
action = models.CharField(max_length=250)
person = models.ForeignKey(Person)
class Parent(Person):
#some attributes that are not relevant
class Son(Person)
parent = models.ForeignKey(Parent)
#other attributes that are not relevant
это довольно просто ... у меня есть Parent , который имеет несколько Сыновья оба могут выполнять действия на веб-сайте, и все они сохраняются в таблице истории, содержащей ссылку на человека, который выполнил действие.Таблица истории выглядит примерно так:
date | action | person_id
----------------------------------------
16-12-2010 | saved profile | 1
16-12-2010 | new child | 2
для родителя, мне нужно отобразить все его действия и действия его сыновей. Используя sql, это будет:
SELECT * FROM History where person_id=1
UNION
SELECT h.* FROM History h JOIN Son s ON s.person_ptr_id=h.person_id WHERE s.parent_id=1
, но у меня естьпонятия не имею, как это сделать с помощью ORM Джанго.Myabe с помощью двух запросов?цикл?Есть ли у вас какие-либо идеи?Я был бы очень признателен за помощь .. заранее спасибо
Кстати: я использую django 1.1
EDIT: Я добавил атрибуты в классы.Это только примеры, мои таблицы имеют больше атрибутов, но именно так django переводит отношения в таблицы