2010-07-01 25 views
23

Tôi cần theo dõi/ghi nhật ký hoạt động trên quản trị viên Django.Hoạt động ghi nhật ký trên quản trị của Django - Django

Tôi biết có thư được quản trị viên lưu trữ ở đâu đó, nhưng tôi không biết cách truy cập chúng để sử dụng chúng dưới dạng nhật ký đơn giản.


Tôi đang cố gắng để theo dõi sau đây:

  • tài khoản thực hiện hành động

  • hành động cam kết

  • Datetime hành động

Xin cảm ơn các bạn.

+0

không có câu trả lời nào dưới đây hoạt động? –

Trả lời

10

Nhật ký nằm trong bảng django_admin_log trong cơ sở dữ liệu được django sử dụng.

+0

cảm ơn! Nhưng không có dấu thời gian được tạo ra, bạn có nghĩ rằng tôi có thể khắc phục điều này bằng cách nào đó không? Tôi đang nghĩ đến việc thêm một hàng sql với một mặc định – RadiantHex

+0

Bạn có thể sử dụng 'action_time' bên trong lớp' LogEntry'. Hãy nhìn vào câu trả lời của tôi, –

+0

bảng django_admin_log chỉ cho bạn biết rằng có thay đổi nó không cho bạn biết giá trị nào thay đổi và thứ hai khi sử dụng nhiều ngôn ngữ lịch sử sẽ hiển thị cho bạn tên cột chỉ bằng tiếng Anh, t sẽ không thay đổi mỗi bạn locale.It là tốt hơn để làm cho lịch sử của riêng bạn hoặc sử dụng django.revision – ha22109

4

Hãy xem lớp LogEntry lưu trữ nhật ký cho các hành động bên trong quản trị viên.

Bạn có thể sử dụng nó như thế này để chèn các mục tùy chỉnh trong các bản ghi:

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) 
16

tôi phải làm một cái gì đó tương tự và tôi đã sử dụng một cái gì đó như thế này:

from django.contrib.admin.models import LogEntry 

logs = LogEntry.objects.all() #or you can filter, etc. 
for l in logs: 
    #perform action 

Bạn có thể thấy all of the attributes for LogEntry, nhưng tôi nghĩ những cái bạn đang tìm kiếm là l.user, l.action_time và l.obj_repr (tên của obj) và l.action_flag ({1: 'Add', 2: 'Change', 3: 'Delete '}). Hy vọng rằng sẽ giúp!

Các vấn đề liên quan