Guest User

Untitled

a guest
Jun 25th, 2018
106
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.12 KB | None | 0 0
  1. from django.db import models
  2. from django.core.exceptions import ObjectDoesNotExist
  3.  
  4.  
  5. class OneToOneField(models.OneToOneField):
  6. def __init__(self, to, **kwargs):
  7. self.related_default = kwargs.pop('related_default', None)
  8. super(OneToOneField, self).__init__(to, **kwargs)
  9.  
  10. def contribute_to_related_class(self, cls, related):
  11. setattr(cls, related.get_accessor_name(),
  12. SingleRelatedObjectDescriptor(related, self.related_default))
  13.  
  14.  
  15. class SingleRelatedObjectDescriptor(models.related.SingleRelatedObjectDescriptor):
  16. def __init__(self, related, default):
  17. super(SingleRelatedObjectDescriptor, self).__init__(related)
  18. self.default = default
  19.  
  20. def __get__(self, instance, instance_type=None):
  21. try:
  22. return super(SingleRelatedObjectDescriptor, self).__get__(instance,
  23. instance_type)
  24. except ObjectDoesNotExist:
  25. if self.default is None:
  26. raise
  27. value = self.default(instance)
  28. self.__set__(instance, value)
  29. return value
Add Comment
Please, Sign In to add comment