- obj.description_pl = desc
- obj.save(update_fields=['description_pl'], quick=True)
+ updated = set()
+ for data_field, model_field in fields.items():
+ value = data.get(data_field)
+ if value:
+ if obj.category == 'author' and model_field == 'name_pl':
+ obj.sort_key = sortify(value.lower())
+ updated.add('sort_key')
+ value = ' '.join(reversed([t.strip() for t in value.split(',', 1)]))
+ setattr(obj, model_field, value)
+ updated.add(model_field)
+ if data.get('photo'):
+ response = urlopen(data['photo'])
+ ext = response.headers.get('Content-Type', '').rsplit('/', 1)[-1]
+ obj.photo.save(
+ "{}.{}".format(self.kwargs['slug'], ext),
+ ContentFile(response.read()),
+ save=False,
+ )
+ updated.add('photo')
+
+ if obj.pk:
+ obj.save(update_fields=updated, quick=True)
+ else:
+ obj.save()