Hi Simon, Thanks for the post. I just tried this and ForeignObject requires one of the 2 columns being referred to be unique. But thats an interesting object!
On Saturday, June 18, 2016 at 8:34:31 PM UTC+5:30, Simon Charette wrote: > > Hi Ram, > > I don't have a complete solution for you but I suggest you take a look at > the > django.db.models.fields.related.ForeignObject class. > > If I'm not mistaken it should allow you to define multi-column > relationships > on both your Article and PublisherMediumBilling models and refer to them > using > the `select_related()` and `prefetch_related()``API while the later uses > Python > to perform in-memory JOINs. > > class Article(models.Model): > publisher = ForeignKey(Publisher, related_name='articles') > medium = ForeignKey(Medium) > billing = ForeignObject( > 'PublisherMediumBilling', from_fields=['publisher', 'medium'], > to_fields=['publisher', 'medium'] > ) > > publisher.articles.select_related('billing') > > Cheers, > Simon > > Le samedi 18 juin 2016 07:09:03 UTC-4, Ram Jayaraman a écrit : >> >> I apologize if this is an old question, I did search SO/google for a good >> few hours. >> >> I have the following models. >> >> Publisher() >> name = CharField() >> >> Medium() >> name = CharField() >> >> Article() >> publisher = ForeignKey(Publisher, related_name="articles") >> medium = ForeignKey(Medium, related_name="articles") >> text = TextField() >> >> PublisherMediumBilling() >> publisher = ForeignKey(Publisher() >> medium = ForeignKey(Article) >> lots_of_other_columns >> ... >> class Meta: >> unique_together = ['publisher', 'medium'] >> >> >> >> I am looking to query all Article from a given publisher, and also fetch >> the related PublisherMediumBilling joining on the columns Publisher and >> Medium, >> Prefetch() object doesn't seem to quite work for this case. >> >> I can of course filter-query for all PublisherMediumBilling and cache it >> and do a in-memory Python JOIN. Is there a way to do through one of the ORM >> Apis ? >> > -- You received this message because you are subscribed to the Google Groups "Django users" group. To unsubscribe from this group and stop receiving emails from it, send an email to django-users+unsubscr...@googlegroups.com. To post to this group, send email to django-users@googlegroups.com. Visit this group at https://groups.google.com/group/django-users. To view this discussion on the web visit https://groups.google.com/d/msgid/django-users/f623d12b-ed64-4611-9b57-b68276d4eadb%40googlegroups.com. For more options, visit https://groups.google.com/d/optout.