mirror of
				https://github.com/django/django.git
				synced 2025-10-31 09:41:08 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			61 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			61 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
| """
 | |
| Tests for defer() and only().
 | |
| """
 | |
| 
 | |
| from django.db import models
 | |
| 
 | |
| 
 | |
| class Secondary(models.Model):
 | |
|     first = models.CharField(max_length=50)
 | |
|     second = models.CharField(max_length=50)
 | |
| 
 | |
| 
 | |
| class Primary(models.Model):
 | |
|     name = models.CharField(max_length=50)
 | |
|     value = models.CharField(max_length=50)
 | |
|     related = models.ForeignKey(Secondary, models.CASCADE)
 | |
| 
 | |
|     def __str__(self):
 | |
|         return self.name
 | |
| 
 | |
| 
 | |
| class Child(Primary):
 | |
|     pass
 | |
| 
 | |
| 
 | |
| class BigChild(Primary):
 | |
|     other = models.CharField(max_length=50)
 | |
| 
 | |
| 
 | |
| class ChildProxy(Child):
 | |
|     class Meta:
 | |
|         proxy = True
 | |
| 
 | |
| 
 | |
| class RefreshPrimaryProxy(Primary):
 | |
|     class Meta:
 | |
|         proxy = True
 | |
| 
 | |
|     def refresh_from_db(self, using=None, fields=None, **kwargs):
 | |
|         # Reloads all deferred fields if any of the fields is deferred.
 | |
|         if fields is not None:
 | |
|             fields = set(fields)
 | |
|             deferred_fields = self.get_deferred_fields()
 | |
|             if fields.intersection(deferred_fields):
 | |
|                 fields = fields.union(deferred_fields)
 | |
|         super().refresh_from_db(using, fields, **kwargs)
 | |
| 
 | |
| 
 | |
| class ShadowParent(models.Model):
 | |
|     """
 | |
|     ShadowParent declares a scalar, rather than a field. When this is
 | |
|     overridden, the field value, rather than the scalar value must still be
 | |
|     used when the field is deferred.
 | |
|     """
 | |
| 
 | |
|     name = "aphrodite"
 | |
| 
 | |
| 
 | |
| class ShadowChild(ShadowParent):
 | |
|     name = models.CharField(default="adonis", max_length=6)
 |