Django

Code

root/django/trunk/django/contrib/contenttypes/tests.py

Revision 7294, 1.3 kB (checked in by mtredinnick, 8 months ago)

Added "svn:eol-style native" to every text file in the tree (*.txt, *.html,
*.py, *.xml and AUTHORS, etc). Added "svn:ignore *.pyc" to some directories in
tests/regressiontests/ that were previously missing it.

Fixed #6545, #6801.

  • Property svn:eol-style set to native
Line 
1 """
2 Make sure that the content type cache (see ContentTypeManager) works correctly.
3 Lookups for a particular content type -- by model or by ID -- should hit the
4 database only on the first lookup.
5
6 First, let's make sure we're dealing with a blank slate (and that DEBUG is on so
7 that queries get logged)::
8
9     >>> from django.conf import settings
10     >>> settings.DEBUG = True
11
12     >>> from django.contrib.contenttypes.models import ContentType
13     >>> ContentType.objects.clear_cache()
14
15     >>> from django import db
16     >>> db.reset_queries()
17     
18 At this point, a lookup for a ContentType should hit the DB::
19
20     >>> ContentType.objects.get_for_model(ContentType)
21     <ContentType: content type>
22     
23     >>> len(db.connection.queries)
24     1
25
26 A second hit, though, won't hit the DB, nor will a lookup by ID::
27
28     >>> ct = ContentType.objects.get_for_model(ContentType)
29     >>> len(db.connection.queries)
30     1
31     >>> ContentType.objects.get_for_id(ct.id)
32     <ContentType: content type>
33     >>> len(db.connection.queries)
34     1
35
36 Once we clear the cache, another lookup will again hit the DB::
37
38     >>> ContentType.objects.clear_cache()
39     >>> ContentType.objects.get_for_model(ContentType)
40     <ContentType: content type>
41     >>> len(db.connection.queries)
42     2
43
44 Don't forget to reset DEBUG!
45
46     >>> settings.DEBUG = False
47 """
Note: See TracBrowser for help on using the browser.