| 301 | self.m2m_data = None |
| 302 | |
| 303 | def save_deferred_fields(self, using=None): |
| 304 | self.m2m_data = {} |
| 305 | for field, field_value in self.deferred_fields.items(): |
| 306 | opts = self.object._meta |
| 307 | label = opts.app_label + "." + opts.model_name |
| 308 | if isinstance(field.remote_field, models.ManyToManyRel): |
| 309 | try: |
| 310 | values = deserialize_m2m_values( |
| 311 | field, field_value, using, handle_forward_references=False |
| 312 | ) |
| 313 | except M2MDeserializationError as e: |
| 314 | raise DeserializationError.WithData( |
| 315 | e.original_exc, label, self.object.pk, e.pk |
| 316 | ) |
| 317 | self.m2m_data[field.name] = values |
| 318 | elif isinstance(field.remote_field, models.ManyToOneRel): |
| 319 | try: |
| 320 | value = deserialize_fk_value( |
| 321 | field, field_value, using, handle_forward_references=False |
| 322 | ) |
| 323 | except Exception as e: |
| 324 | raise DeserializationError.WithData( |
| 325 | e, label, self.object.pk, field_value |
| 326 | ) |
| 327 | setattr(self.object, field.attname, value) |
| 328 | self.save() |
| 329 | |
| 330 | |
| 331 | def build_instance(Model, data, db): |