get foreign key objects in a single query – Django
|May 14, 2010||Posted by forumadmin under TechQns||
I have 2 models in my django code:
class ModelA(models.Model): name = models.CharField(max_length=255) description = models.CharField(max_length=255) created_by = models.ForeignKey(User) class ModelB(models.Model): category = models.CharField(max_length=255) modela_link = models.ForeignKey(ModelA, 'modelb_link') functions = models.CharField(max_length=255) created_by = models.ForeignKey(User)
Say ModelA has 100 records, all of which may or may not have links to ModelB
Now say I want to get a list of every ModelA record along with the data from ModelB
I would do:
list_a = ModelA.objects.all()
Then to get the data for ModelB I would have to do
for i in list_a: i.additional_data = i.modelb_link.all()
However this runs a query on every instance of i. Thus making 101 queries to run.
Is there any way of running this all in just 1 query. Or at least less than the 101 queries.
I’ve tried putting in
ModelA.objects.select_related().all() but this didn’t seem to have any effect.
|Asked By – John||Read Answers|