i am making a history page for a website. The structure of my classes is something like this:

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
its quite simple... i have a Parent that has multiple Sons both can do actions on the website and they are all saved in the History table that has a reference to the Person that executed the action. The history table is something like:
date | action | person_id
----------------------------------------
16-12-2010 | saved profile | 1
16-12-2010 | new child | 2
for a Parent i need to display all his actions and the action of his sons Using sql it would be:
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
but i have no idea how to do that using django's ORM. Myabe using two querys? a loop? Do you have any ideas? i'd really appreciate some help.. thanks in advance
BTW: i'm using django 1.1
EDIT: i added the attributes in the classes. These are just examples, my tables have more attributes, but this is how django translate the relations into tables
Personas an abstract class in Django? Also, areParentandSonbeing modeled as separate classes? This would mean different tables. Does it make sense to model them using one class, with a foreign key pointing to the same class?