Ticket #3188: patch.diff

File patch.diff, 2.2 KB (added by frankie@…, 9 years ago)

Patch in the correct format and in the correct place.

  • django/db/models/manipulators.py

     
    160160                    # old to the new, to see which fields have changed.
    161161                    old_rel_obj = None
    162162                    if self.change:
    163                         if rel_new_data[related.opts.pk.name][0]:
    164                             try:
    165                                 old_rel_obj = getattr(self.original_object, related.get_accessor_name()).get(**{'%s__exact' % related.opts.pk.name: rel_new_data[related.opts.pk.attname][0]})
    166                             except ObjectDoesNotExist:
    167                                 pass
     163                        from django.db.models.fields.related import OneToOneField
     164                        if type(related.field)==OneToOneField:
     165                            old_rel_obj = getattr(self.original_object, related.get_accessor_name())
     166                        else:
     167                            if rel_new_data[related.opts.pk.name][0]:
     168                                try:
     169                                    old_rel_obj = getattr(self.original_object, related.get_accessor_name()).get(**{'%s__exact' % related.opts.pk.name: rel_new_data[related.opts.pk.attname][0]})
     170                                except ObjectDoesNotExist:
     171                                    pass
    168172
    169173                    for f in related.opts.fields:
    170174                        if f.core and not isinstance(f, FileField) and f.get_manipulator_new_data(rel_new_data, rel=True) in (None, ''):
     
    203207                                if isinstance(f, FileField) and rel_new_data.get(f.name, False):
    204208                                    f.save_file(rel_new_data, new_rel_obj, self.change and old_rel_obj or None, old_rel_obj is not None, rel=True)
    205209
    206                         # Calculate whether any fields have changed.
    207210                        if self.change:
    208211                            if not old_rel_obj: # This object didn't exist before.
    209212                                self.fields_added.append('%s "%s"' % (related.opts.verbose_name, new_rel_obj))
Back to Top