2009-11-17 4 views
2

Django 관리자의 'Recent Actions'와 비슷한 Django 응용 프로그램의 기능을 만들고 싶습니다. 내 다른 모델의 기록 정보를 저장하고 싶습니다.django에서 '기록'유형 모델을 만드는 가장 좋은 방법은 무엇입니까?

예를 들어 도서 및 작성자라는 두 가지 모델이 있다고 가정 해보십시오. 어떤 모델에서 주어진 객체에 대해 수행 된 작업 (추가, 수정, 삭제 등)과 같은 정보를 저장하는 세 번째 모델이 필요합니다.

누가 작업을 쉽게하는지, 누가 어떤 작업을 수행했는지에 관한 정보를 저장하는 방법에 대해 확신 할 수 없습니다.

나의 초기 아이디어는이 정보를 저장할 '트랜잭션'모델을 가지고 있었고, 내 책과 저자 모델은 모두 ForeignKey 관계를 가질 수있었습니다. 그러나 주어진 책이나 저자를 삭제하면 트랜잭션 기록도 삭제되고이 개체가 실제로 삭제 된 기록이 없습니다.

나는 다른 가능한 해결책을 생각해 왔지만, 나는 여기서 더 많은 경험있는 의견을 먼저 요구할 것이라고 생각했다. 이 문제에 어떻게 접근해야하며 합리적인 해결책은 무엇입니까?

감사합니다.

답변

4

django-reversion - 구현하거나 독자적으로 구현하기 위해 배울 수도 있습니다. Django Reversion은 변경 사항에 대한 정보를 저장하고, 그 순간에 존재했던 항목의 일련 화 된 사본과 함께 작동합니다. 즉, 특정 항목을 나중에 불러와 비교 또는 복원 등을 수행 할 수 있습니다.

독자적인 맞춤 솔루션을 구현하기로 결정한 경우 Django를 signal sub-system에 내장하여 사용하는 것이 좋습니다. Django는 모델 생성, 저장 및 삭제와 같이 언급 한 것들에 대한 공통적 인 신호를 제공합니다. 필요성을 알게되면 맞춤 신호를 추가 할 수 있습니다.

신호를 사용하면 Book/Author 구현 코드와 별도로 'History'코드를 개발할 수 있습니다.이 코드는 장기적으로 저작물이 될 것입니다. 다시 말하자면, 장고 - 복귀는 신호로 거의 모든 작업을 수행함으로써 훌륭한 참고서 역할을합니다.

+0

감사합니다. 정말 도움이됩니다. 장고 - 개정은 내 필요에 너무 많은 것처럼 보이지만, 신호 시스템이 실제로 나를 도와 줄 것입니다. – hora

0

관리자 인터페이스 외부의 변경 사항을 관리하는 fullhistory을 사용해 볼 수도 있습니다. 테스트 할 때 몇 가지 문제가 있었지만 문제가 될 수 있습니다.

1

IMHO 가장 좋은 해결책은 불행히도 돈이 드는 그의 Pro Django 책에서 Marty Alchin이 개발 한 솔루션이지만, 다행히도 어쨌든 가치가있는 책입니다.

감사 추적의 초기 버전은 장고 위키의 AuditTrail에서 찾을 수 있지만 최근 버전의 장고에서이 코드가 얼마나 잘 작동하는지 잘 모르겠습니다.

관련 문제