""" 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, 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(RefreshPrimaryProxy, self).refresh_from_db(using, fields, **kwargs)