web/lib/django/core/serializers/base.py
changeset 29 cc9b7e14412b
parent 0 0d40e90630ef
equal deleted inserted replaced
28:b758351d191f 29:cc9b7e14412b
    31         """
    31         """
    32         self.options = options
    32         self.options = options
    33 
    33 
    34         self.stream = options.get("stream", StringIO())
    34         self.stream = options.get("stream", StringIO())
    35         self.selected_fields = options.get("fields")
    35         self.selected_fields = options.get("fields")
       
    36         self.use_natural_keys = options.get("use_natural_keys", False)
    36 
    37 
    37         self.start_serialization()
    38         self.start_serialization()
    38         for obj in queryset:
    39         for obj in queryset:
    39             self.start_object(obj)
    40             self.start_object(obj)
    40             for field in obj._meta.local_fields:
    41             for field in obj._meta.local_fields:
   150     def __init__(self, obj, m2m_data=None):
   151     def __init__(self, obj, m2m_data=None):
   151         self.object = obj
   152         self.object = obj
   152         self.m2m_data = m2m_data
   153         self.m2m_data = m2m_data
   153 
   154 
   154     def __repr__(self):
   155     def __repr__(self):
   155         return "<DeserializedObject: %s>" % smart_str(self.object)
   156         return "<DeserializedObject: %s.%s(pk=%s)>" % (
       
   157             self.object._meta.app_label, self.object._meta.object_name, self.object.pk)
   156 
   158 
   157     def save(self, save_m2m=True):
   159     def save(self, save_m2m=True, using=None):
   158         # Call save on the Model baseclass directly. This bypasses any
   160         # Call save on the Model baseclass directly. This bypasses any
   159         # model-defined save. The save is also forced to be raw.
   161         # model-defined save. The save is also forced to be raw.
   160         # This ensures that the data that is deserialized is literally
   162         # This ensures that the data that is deserialized is literally
   161         # what came from the file, not post-processed by pre_save/save
   163         # what came from the file, not post-processed by pre_save/save
   162         # methods.
   164         # methods.
   163         models.Model.save_base(self.object, raw=True)
   165         models.Model.save_base(self.object, using=using, raw=True)
   164         if self.m2m_data and save_m2m:
   166         if self.m2m_data and save_m2m:
   165             for accessor_name, object_list in self.m2m_data.items():
   167             for accessor_name, object_list in self.m2m_data.items():
   166                 setattr(self.object, accessor_name, object_list)
   168                 setattr(self.object, accessor_name, object_list)
   167 
   169 
   168         # prevent a second (possibly accidental) call to save() from saving
   170         # prevent a second (possibly accidental) call to save() from saving