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

Reply via email to