{{{
# models.py
from django.db import models
class ExampleParent(models.Model):
def __unicode__(self):
return u'Example Parent: %s' % self.id
class ExampleInline(models.Model):
parent = models.ForeignKey('ExampleParent')
child = models.ForeignKey('ExampleChild')
def __unicode__(self):
return u'Example Inline: %s' % self.id
class ExampleChild(models.Model):
def __unicode__(self):
return u'Example Child: %s' % self.id
# admin.py
from django.contrib import admin
from admin_issue.example_problem.models import (ExampleParent,
ExampleInline)
class ExampleInlineInline(admin.TabularInline):
model = ExampleInline
class ExampleParentAdmin(admin.ModelAdmin):
inlines = [
ExampleInlineInline
]
admin.site.register(ExampleParent, ExampleParentAdmin)
}}}
If you go to the admin details for an ExampleParent instance, a query will
be executed to fetch all of ExampleChild for as many ExampleInlines are
associated with that ExampleParent. These are exactly identical queries. I
would expect each queryset to be cached and for the ORM.
I have a few models in production that produces hundreds (sometimes over a
thousand) queries. Most of them are exactly identical queries that could
be cached.
I could probably patch my code to work around this, but it seems like the
expected default behavior would be to cache these.
I can generate a small project with a sqlite db if necessary.
John P.
--
Ticket URL: <https://code.djangoproject.com/ticket/22115>
Django <https://code.djangoproject.com/>
The Web framework for perfectionists with deadlines.
* needs_better_patch: => 0
* needs_docs: => 0
* needs_tests: => 0
* stage: Unreviewed => Accepted
Comment:
This makes sense. However, it might be prohibitively hard to implement.
--
Ticket URL: <https://code.djangoproject.com/ticket/22115#comment:1>
Comment (by Tim Graham):
Possible duplicate of #5372.
--
Ticket URL: <https://code.djangoproject.com/ticket/22115#comment:2>
* status: new => closed
* resolution: => duplicate
Comment:
I confirm this is a duplicate of #5372.
--
Ticket URL: <https://code.djangoproject.com/ticket/22115#comment:3>