Sorry for the self-followup, but I got the right bits of extra. My actual case was a bit more complicated than my example below (it involved a fourth model), but it's working now - and much quicker than w/ the IN directive. Thanks.
On Fri, 6 Mar 2009, Jeff Gentry wrote: > On Fri, 6 Mar 2009, Malcolm Tredinnick wrote: > > > Bob.objects.filter(foo=myFoo).filter(blah__in=myBlahs) > > Seems like the best (and obvious) way to me. > > Gotcha. > > > Yes it does. As written, your models have no ordering requirements. That > > complete lack of constraint is preserved perfectly. :-) > > True ;) > > > Precisely. If you want ordering, you have to specify it. The database is > > in no way obliged to return rows even in the order they are stored on > > disk, so if you're relying on that, you are making an error. > > Fair enough, that's what I expected as I know that SQL IN isn't guaranteed > to preserve anything. I thought that there might be some chance that > Django was doing something on top of that, but doubted it (and turned out > to be right). > > Here's a followup though. To go back to my original model descriptions: > > class Foo: > asdf = models.CharField() > > class Blah: > qwerty = models.CharField() > > class Bob: > foo = models.ForeignKey(Foo) > blah = models.ForeignKey(Blah) > > Suppose that for a given Foo (say foo.id = 42), I want the Bobs associated > with the entire set of Blahs. In SQL I could do something like this > (might not be exactly right, but should demonstrate the idea): > > select * from app_bob,app_blah where app_bob.blah_id=app_blah.id and > app_foo_id=42; > > I'd imagine this would be faster than going through the IN directive > (particularly considering that the entire set of Blahs will typically be > 50k-250k in length). I know that I can drop down to writing raw SQL > queries but was trying to see if there was a way I could do something like > this (if this is actually a smart query to do at all) via the ORM. I'm > currently looking at the extra() command but can't seem to get the right > mojo to get that working. > > What's the right way to get this one working? > > Thanks > -J > > > --~--~---------~--~----~------------~-------~--~----~ 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 django-users+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/django-users?hl=en -~----------~----~----~----~------~----~------~--~---