2010-01-05 2 views
7

주어진 모델의 모든 레코드를 생성하고 업데이트하는 사용자를 추적하고 싶습니다. 로그인 한 사용자의 UserProfile에 "사용자"정보가 있습니다 (모든 사용자는이 레코드를 업데이트하기 위해 로그인해야합니다).Django 모델 감사 내역을 구현하는 방법은 무엇입니까? save() 메소드 모델에서 로그인 한 사용자에게 어떻게 접근합니까?

+4

이것은 정말 늦었지만 django에서 모델 감사를 수행하려는 사용자에게 유용 할 수있는 게시물을 작성했습니다. http://spapas.github.io/2015/01/21/django- 모델 감사/ – Serafeim

답변

2

django-reversion을 찾고있는 것처럼 들리 겠지만 변경 사항에 대한 일부 메타 데이터 (예 : 누가 만든 사람)를 포함하여 특정 모델의 모든 변경 사항을 추적 할 수 있습니다.

+0

Django-revision은 진화 된 모델의 상태를 추적하는 데 더 중요하며 마지막 사용자가 레코드를 수정하는 것을 추적하는 데 도움이되지 않습니다. – MikeN

+0

예 - http://code.google.com/p/django-reversion/wiki/LowLevelAPI –

1

장고 모델은 (목적 상) request 개체에 대한 액세스 권한이 없습니다. 뷰에서 모델에 전달해야합니다.

+4

왜 의도적으로? 현재 모델에서 현재 사용자 객체에 액세스해야한다고 생각하는 경우가 있습니다. – ultrajohn

1

(장고 문서에서) 당신의 관리자 클래스에서 save_model 방법 오버라이드 (override) 할 것, 관리자의 모든 변경에 대해 자동으로 사용자 필드를 설정하는 가장 빠른 방법 : 그렇지 않으면

class ArticleAdmin(admin.ModelAdmin): 
    def save_model(self, request, obj, form, change): 
     obj.user = request.user 
     obj.save() 

을 수행 할 수 있습니다 Dominic Rodger가 언급 한 django-revision과 같은 것을 사용하십시오.

+0

의 '버전 메타 데이터'섹션을 참조하십시오. 이는 관리자 만 사용할 수 있습니다. – MikeN

관련 문제