src/hdalab/fields.py
changeset 368 ed8888cec220
parent 359 46ad324f6fe4
child 458 604b887e70c3
equal deleted inserted replaced
367:7b0fc4cbed2e 368:ed8888cec220
     5 from https://gist.github.com/gsakkis/601977
     5 from https://gist.github.com/gsakkis/601977
     6 to correct https://code.djangoproject.com/ticket/10227
     6 to correct https://code.djangoproject.com/ticket/10227
     7 
     7 
     8 @author: ymh
     8 @author: ymh
     9 '''
     9 '''
       
    10 from django.core.exceptions import ObjectDoesNotExist
    10 from django.db import models
    11 from django.db import models
    11 from django.db.models import fields as django_fields
    12 from django.db.models import fields as django_fields
    12 from django.core.exceptions import ObjectDoesNotExist
    13 from south.modelsinspector import add_introspection_rules
    13 
    14 
    14 
    15 
    15 class OneToOneField(models.OneToOneField):    
    16 class OneToOneField(models.OneToOneField):    
    16     def __init__(self, to, **kwargs):
    17     def __init__(self, to, **kwargs):
    17         self.related_default = kwargs.pop('related_default', None)
    18         self.related_default = kwargs.pop('related_default', None)
    37             value = self.default(instance)
    38             value = self.default(instance)
    38             setattr(instance, self.cache_name, value)
    39             setattr(instance, self.cache_name, value)
    39             if value is not None:
    40             if value is not None:
    40                 setattr(value, self.related.field.get_cache_name(), instance)
    41                 setattr(value, self.related.field.get_cache_name(), instance)
    41             return value
    42             return value
       
    43         
       
    44 add_introspection_rules([
       
    45     (
       
    46         [OneToOneField],
       
    47         [],         # Positional arguments (not used)
       
    48         {           # Keyword argument
       
    49             "related_default": ["related_default", {"default": None}],
       
    50         },
       
    51     ),
       
    52 ], ["^hdalab\.fields\.OneToOneField"])