Django adminのアクティビティを追跡/ログに記録する必要があります。
管理者によってどこかに保存されているメッセージがあることは知っていますが、それらを単純なログとして使用するためにそれらにアクセスする方法がわかりません。
私は以下を追跡しようとしています:
アクションを実行するユーザー
コミットされたアクション
アクションの日時
みんなありがとう。
私は似たようなことをしなければならず、次のようなものを使用しました:
from Django.contrib.admin.models import LogEntry
logs = LogEntry.objects.all() #or you can filter, etc.
for l in logs:
#perform action
LogEntryのすべての属性 が表示されますが、探しているのはl.user、l.action_time、l.obj_repr(objの名前)およびl.action_flag( {1: '追加'、2: '変更'、3: '削除'})。お役に立てば幸いです。
ログは、Djangoが使用するデータベースのDjango_admin_logテーブルにあります。
管理者内のアクションのログを格納する LogEntry クラスを見てください。
このように使用して、ログにカスタムエントリを挿入できます。
from settings import LOG_SIZE, LOG_THRESHOLD
from Django.contrib.admin.models import LogEntry
if not LogEntry._meta.installed:
raise ImproperlyConfigured("You'll need to put 'Django.contrib.admin' in your INSTALLED_APPS setting before you can use the admin application.")
def log_action(user_id, content_type_id, object_id, object_repr, action_flag, change_message=''):
# limit log size
log_count = LogEntry.objects.count()
if log_count > LOG_THRESHOLD:
to_delete = LogEntry.objects.all()[LOG_SIZE:log_count]
#FIXME (!?): to_delete.delete()
for d in to_delete:
d.delete()
LogEntry.objects.log_action(user_id, content_type_id, object_id, object_repr, action_flag, change_message)
追加の依存関係をインストールしてもかまわない場合は、 Django-logentry-admin をお勧めします。これは、私にとって魅力のように機能しました。