LoginSignup
5
5

More than 5 years have passed since last update.

django adminで、logentryをそれっぽく出力

Last updated at Posted at 2015-02-23

ModelAdminを適当に継承

from django.contrib import admin

class BaseAdmin(admin.ModelAdmin):

    def construct_change_message(self, request, form, formsets):
        change_message = []
        if form.changed_data:
            for name in form.changed_data:
                new_data = form.cleaned_data[name]
                old_data = form.initial[name]
                change_message.append(u"{}: {} -> {}".format(name, old_data, new_data))

        if formsets:
            for formset in formsets:
                for added_object in formset.new_objects:
                    change_message.append(_('Added %(name)s "%(object)s".')
                                          % {'name': force_text(added_object._meta.verbose_name),
                                             'object': force_text(added_object)})
                for changed_object, changed_fields in formset.changed_objects:
                    change_message.append(_('Changed %(list)s for %(name)s "%(object)s".')
                                          % {'list': get_text_list(changed_fields, _('and')),
                                             'name': force_text(changed_object._meta.verbose_name),
                                             'object': force_text(changed_object)})
                for deleted_object in formset.deleted_objects:
                    change_message.append(_('Deleted %(name)s "%(object)s".')
                                          % {'name': force_text(deleted_object._meta.verbose_name),
                                             'object': force_text(deleted_object)})
        change_message = ', '.join(change_message)
        return change_message or _('No fields changed.')

使うとき

from hoge.models import Hoge

class HogeAdmin(BaseAdmin):
    pass

admin.site.register(Hoge, HogeAdmin)
5
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
5