123456789101112131415161718192021222324252627282930313233343536373839404142434445464748 |
- """
- Tests for defer() and only().
- """
- from django.db import models
- from django.utils.encoding import python_2_unicode_compatible
- class Secondary(models.Model):
- first = models.CharField(max_length=50)
- second = models.CharField(max_length=50)
- @python_2_unicode_compatible
- class Primary(models.Model):
- name = models.CharField(max_length=50)
- value = models.CharField(max_length=50)
- related = models.ForeignKey(Secondary)
- 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(RefreshPrimaryProxy, self).refresh_from_db(using, fields, **kwargs)
|