Hi --
I have a question about many-to-many relationships and how to reference
a related object field using Django syntax via the Manager class.
I think this is probably pretty simple and just reflects my inexperience
working with Django (which overall I am enjoying, btw.)
Anyway, the models look like this:
class Poi(models.Model): # A "Point of Interest"
id = models.AutoField(primary_key=True)
title = models.CharField(max_length=1024, null=False, db_index=True)
articles = models.ManyToManyField('Article', null=True,
db_table='poi_articles')
class PoiRank(models.Model):
poi = models.OneToOneField(Poi, primary_key=True)
rank = models.IntegerField(null = False, blank = False)
class Article(models.Model):
id = models.AutoField(primary_key=True)
title = models.CharField(max_length=1024, blank=True, db_index=True)
pois = models.ManyToManyField(Poi, null=True, db_table='poi_articles')
status = models.CharField(max_length=27, blank=True)
One Poi can have many Articles written about it. One Article can be
referenced by many Poi's.
A Poi has 0 or 1 "rank" value which is some measure of its popularity.
Now, I had to set the db_table name to poi_articles because otherwise I
ended up with what were essentially duplicate tables (just with the
order of the foreign keys swapped).
Of course, doing that I then had to remove the duplicate poi_articles
table that got generated the first time I ran syncdb.
This makes me think that I may not have set things up correctly in the
first place.
Anyway, after doing a query I have a QuerySet of articles. I need to
know that the rank of the article is. That's all. It should be simple,
right?
The following SQL give the expected result if I enter it directly:
SELECT p.title, a.status, pr.rank FROM article a
INNER JOIN poi_articles ON a.id = poi_articles.article_id
INNER JOIN poi p ON poi_articles.poi_id = p.id
INNER JOIN poi_rank pr ON pr.poi_id = p.id
WHERE a.id = 803827;
But, how do I create that query using Django syntax and the Manager?
Any help will be very much appreciated!
Thanks,
Liam
--~--~---------~--~----~------------~-------~--~----~
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
-~----------~----~----~----~------~----~------~--~---