Change.field

This commit is contained in:
Laura Klünder 2017-06-25 14:13:06 +02:00
parent 1e0c122cfe
commit cd7d131750
3 changed files with 8 additions and 5 deletions

View file

@ -127,6 +127,10 @@ class Change(models.Model):
self.created_object = None self.created_object = None
self._set_object = value self._set_object = value
@property
def field(self):
return self.model_class._meta.get_field(self.field_name)
def save(self, *args, **kwargs): def save(self, *args, **kwargs):
if self.pk is not None: if self.pk is not None:
raise TypeError('change objects can not be edited (use update to set discarded_by)') raise TypeError('change objects can not be edited (use update to set discarded_by)')

View file

@ -229,10 +229,9 @@ class ChangeSet(models.Model):
object_pks.setdefault(LocationSlug, set()).add(json.loads(change.field_value)) object_pks.setdefault(LocationSlug, set()).add(json.loads(change.field_value))
continue continue
elif not change.field_name.startswith('title_'): elif not change.field_name.startswith('title_'):
field = change.model_class._meta.get_field(change.field_name) model = getattr(change.field, 'related_model', None)
model = getattr(field, 'related_model', None)
if change.action in ('m2m_add', 'm2m_remove'): if change.action in ('m2m_add', 'm2m_remove'):
model = change.model_class._meta.get_field(change.field_name).related_model model = change.field.related_model
if model is not None: if model is not None:
object_pks.setdefault(model, set()).add(json.loads(change.field_value)) object_pks.setdefault(model, set()).add(json.loads(change.field_value))

View file

@ -163,7 +163,7 @@ def group_changes(changeset, can_edit=False, show_history=False):
'order': (4, tuple(code for code, title in settings.LANGUAGES).index(lang)), 'order': (4, tuple(code for code, title in settings.LANGUAGES).index(lang)),
}) })
else: else:
field = obj.__class__._meta.get_field(change.field_name) field = change.field
field_title = field.verbose_name field_title = field.verbose_name
field_value = field.to_python(json.loads(change.field_value)) field_value = field.to_python(json.loads(change.field_value))
if field.related_model is not None: if field.related_model is not None:
@ -200,7 +200,7 @@ def group_changes(changeset, can_edit=False, show_history=False):
lang = change.field_name[6:] lang = change.field_name[6:]
field_title = _('Title (%(lang)s)') % {'lang': dict(settings.LANGUAGES).get(lang, lang)} field_title = _('Title (%(lang)s)') % {'lang': dict(settings.LANGUAGES).get(lang, lang)}
else: else:
field = obj.__class__._meta.get_field(change.field_name) field = change.field
field_title = field.verbose_name field_title = field.verbose_name
model = getattr(field, 'related_model', None) model = getattr(field, 'related_model', None)
if model is not None: if model is not None: