Sebastien Armand [Pink] wrote:
> class Person(models.Model):
>     ...
>     mother = models.ForeignKey('Person')
>     ...
> 
> Will this work?

Use models.ForeignKey('self')

> For example if I've got a Body class and a Legs class, I know that I'll 
> never have a body with more than 2 legs

Did you know about mutation? :-)

> and it would be easier to have a
> leftLeg = ForeignKey(Leg) field
> and a
> rightLeg = ForeignKey(Leg) field
> 
> but this causes many errors when I try to validate my model.

Upon seeing a ForeignKey Django tries to create backward accessors from 
the parent model to children. In your case it should be "Leg.body_set" 
that will fetch all Legs with a ForeignKey to a particular Body.

However since you have two ForeignKeys to the same model Django needs to 
have two such relations: all bodies for a LeftLeg and all bodies for a 
RightLeg. The only problem that it doesn't know how to _name_ these 
relations. It certainly can't have two different "body_set"s on a Leg. 
So the only thing that it asks you is to choose two names for the relations:

     leftLeg = models.ForeignKey(Leg, related_name='bodies_if_left')
     rightLeg = models.ForeignKey(Leg, related_name='bodies_if_right')

My naming skills are known to be lousy so choose your own according to 
what these things really mean.

--~--~---------~--~----~------------~-------~--~----~
 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
-~----------~----~----~----~------~----~------~--~---

Reply via email to