| Home | Trees | Indices | Help |
|---|
|
|
Make sure that the content type cache (see ContentTypeManager) works correctly. Lookups for a particular content type -- by model or by ID -- should hit the database only on the first lookup.
First, let's make sure we're dealing with a blank slate (and that DEBUG is on so that queries get logged):
>>> from django.conf import settings >>> settings.DEBUG = True >>> from django.contrib.contenttypes.models import ContentType >>> ContentType.objects.clear_cache() >>> from django import db >>> db.reset_queries()
At this point, a lookup for a ContentType should hit the DB:
>>> ContentType.objects.get_for_model(ContentType) <ContentType: content type> >>> len(db.connection.queries) 1
A second hit, though, won't hit the DB, nor will a lookup by ID:
>>> ct = ContentType.objects.get_for_model(ContentType) >>> len(db.connection.queries) 1 >>> ContentType.objects.get_for_id(ct.id) <ContentType: content type> >>> len(db.connection.queries) 1
Once we clear the cache, another lookup will again hit the DB:
>>> ContentType.objects.clear_cache() >>> ContentType.objects.get_for_model(ContentType) <ContentType: content type> >>> len(db.connection.queries) 2
Don't forget to reset DEBUG!
>>> settings.DEBUG = False
| Home | Trees | Indices | Help |
|---|
| Generated by Epydoc 3.0.1 on Thu Apr 17 18:52:12 2008 | http://epydoc.sourceforge.net |