For the below models:
class Customer(models.Model):
id = models.IntegerField(primary_key=True)
class OrderA(models.Model):
name = models.CharField(max_length=20)
foo = models.FloatField()
customer = models.ForeignKey(Customer)
type = models.IntegerField()
class OrderB(models.Model):
name = models.CharField(max_length=20)
customer 开发者_高级运维= models.ForeignKey(Customer)
type = models.IntegerField()
I want to grab all the Customer objects with their related OrderA and OrderB objects in one go for a condition (where type in OrderA and OrderB equals 1)
select_related()
will pre-populate the appropriate attributes:
Customer.objects.filter(ordera_set__type=1, orderb_set__type=1).select_related()
You're right in your comment to Ignacio that select_related
works in the opposite direction.
I've written about a technique to do it in this direction on my blog (sorry about the plug).
精彩评论