mirror of
				https://github.com/django/django.git
				synced 2025-10-31 09:41:08 +00:00 
			
		
		
		
	git-svn-id: http://code.djangoproject.com/svn/django/trunk@10113 bcc190cf-cafb-0310-a4f2-bffc1f526a37
		
			
				
	
	
		
			48 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			48 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
| """
 | |
| Regression tests for defer() / only() behavior.
 | |
| """
 | |
| 
 | |
| from django.conf import settings
 | |
| from django.db import connection, models
 | |
| 
 | |
| class Item(models.Model):
 | |
|     name = models.CharField(max_length=10)
 | |
|     text = models.TextField(default="xyzzy")
 | |
|     value = models.IntegerField()
 | |
|     other_value = models.IntegerField(default=0)
 | |
| 
 | |
|     def __unicode__(self):
 | |
|         return self.name
 | |
| 
 | |
| __test__ = {"regression_tests": """
 | |
| Deferred fields should really be deferred and not accidentally use the field's
 | |
| default value just because they aren't passed to __init__.
 | |
| 
 | |
| >>> settings.DEBUG = True
 | |
| >>> _ = Item.objects.create(name="first", value=42)
 | |
| >>> obj = Item.objects.only("name", "other_value").get(name="first")
 | |
| 
 | |
| # Accessing "name" doesn't trigger a new database query. Accessing "value" or
 | |
| # "text" should.
 | |
| >>> num = len(connection.queries)
 | |
| >>> obj.name
 | |
| u"first"
 | |
| >>> obj.other_value
 | |
| 0
 | |
| >>> len(connection.queries) == num
 | |
| True
 | |
| >>> obj.value
 | |
| 42
 | |
| >>> len(connection.queries) == num + 1      # Effect of values lookup.
 | |
| True
 | |
| >>> obj.text
 | |
| u"xyzzy"
 | |
| >>> len(connection.queries) == num + 2      # Effect of text lookup.
 | |
| True
 | |
| 
 | |
| >>> settings.DEBUG = False
 | |
| 
 | |
| """
 | |
| }
 | |
| 
 |