""" 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) >>> 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) >>> 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) >>> len(db.connection.queries) 2 Don't forget to reset DEBUG! >>> settings.DEBUG = False """