adelaide_mike wrote:
> Hi
> My models are, essentially :
> class Cable(models.Model):
> cable = models.CharField(max_length=8)
>
> class Connector(models.Model):
> connector = models.CharField(max_length=8)
>
> class Node(models.Model):
> cable = models.ForeignKey(Cable)
> connector = models ForeignKey(Connector)
>
> So, a real world cable can be plugged in to no, one, or two connectors
> (one at each end). The Node table describes the junctions between
> cables and connectors.
>
> Can I, without resorting to raw SQL, build a queryset that shows
> connector-cable-connector?
You would have a hard time even accomplishing that in raw SQL with those
models... If you have the flexibility to change your models I would try
something like:
class Connector(models.Model):
name = models.CharField(max_length=8)
class Cable(models.Model):
name = models.CharField(max_length-8)
left_connector = models.ForeignKey(Connector, blank=True, null=True)
right_connector = models.ForeignKey(Connector, blank=True, null=True)
This makes your 0, 1, or 2 relationship explicit. I went with the
left/right distinction as it is an easy "handed" way of describing them,
but other choices may be more appropriate depending on your usage
patterns...
Otherwise, your best bet would seem to me to be to use
Node.objects.all().orderby('cable') and group the
connector-cable-connector by yourself. Something that I generally find
useful in situations like that is Python's groupby function from itertools.
--
--Max Battcher--
http://worldmaker.net
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups
"Django users" group.
To post to this group, send email to [email protected]
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
-~----------~----~----~----~------~----~------~--~---