hi david, many thanks for your help there. i initially tried the inheritance method - buut found that my tree traversal broke when trying to traverse a tree made of different types (ie, Node & Jobs). maybe i did something wrong? ie, should i be able to make a tree from those two types if derived from a common model. or is each derived model incompatible with each other?
cheers, paul On Oct 7, 11:16 am, David Hall <[EMAIL PROTECTED]> wrote: > Hi Paul, > > You've got a couple of options for this. The first uses inheritance: > > class Node(models.Model): > parent = models.ForeignKey("Node", blank=True, null=True, > related_name="children") > > class Job(Node): > pass > > class Shot(Node): > pass > > The second uses generic foreign keys: > > class Job(models.Model): > parent_type = models.ForeignKey("contenttypes.ContentType") > parent_id = models.PositiveIntegerField(db_index=True) > parent = GenerticForeignKey("parent_type", "parent_id") > > class Shot(models.Model): > parent_type = models.ForeignKey("contenttypes.ContentType") > parent_id = models.PositiveIntegerField(db_index=True) > parent = GenerticForeignKey("parent_type", "parent_id") > > Personally, I'd go with the first, as it will integrate better with the > Djano admin application. To traverse the tree, use the Node model. > Once you have got to your required location in the tree, use node.job or > node.shot to get the rest of the information. > > David. > > > > paul wrote: > > hi, > > > I'm designing my first django app and would appreciate any advice how > > best to organise my models. > > > I have a hierarchal model called Node. this allows me to create a > > hierarchy of nodes - and perform hierarchal operatoins. So far so > > good. each node can be of two 'types': > > 1/ job > > 2/ shot > > > I did originally try and make shot & job inherit the Node model. > > However, they couldn't 'link' together (ie, using self as a > > ForeignKey) - as they're of different types. So i've made each of > > these two node types into seperate models. each Node should only be > > linked to one type at a time. From the manual/book - i belive that > > GenericForeignKey is the way to go. ie, insert a GenericForeignKey > > field into the Node. Does this sound like a good approach? > > > Many Thanks in Advance, > > > Paul > > -- > David Hall > Technical Lead > Etianen.com > Tel: 07896 106290 > > Email [EMAIL PROTECTED] > Web www.etianen.com > ------------------------------------------------------------------- > Ask for help at [EMAIL PROTECTED] > Etianen.com is a small, professional web development agency that > specialises in fast-paced, creative development. > ----------------- enlightened website development ----------------- --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Django users" group. To post to this group, send email to django-users@googlegroups.com To unsubscribe from this group, send email to [EMAIL PROTECTED] For more options, visit this group at http://groups.google.com/group/django-users?hl=en -~----------~----~----~----~------~----~------~--~---