2014-06-13 1 views
2

요약하면, 내 모델 중 하나의 Many-To-Many 필드에 변경된 사항을 내역에 저장해야합니다.django-simple-history에서 ManyToManyField의 기록

에서 볼 수 있습니다. https://github.com/Kyruus/django-simple-history/commit/5ba8d2b4d72819f154a11f297796e6a2bb7172bf M2M이 지원됩니다. 그러나 M2M 필드를 변경할 때마다 변경된 적이없는 것처럼 모든 기록에서 변경됩니다. 나는 장고와 파이썬에 익숙하다. 그래서 나는 아마도 뭔가를 놓친다.

내 models.py :

from django.contrib import admin 
from school.models import Student, ClassRoom 
from simple_history.admin import SimpleHistoryAdmin 

class StudentAdmin(SimpleHistoryAdmin): 
    list_display = ('studentname',) 

class ClassRoomAdmin(SimpleHistoryAdmin): 
    list_display = ('classname',) 

admin.site.register(Student,StudentAdmin) 
admin.site.register(ClassRoom, ClassRoomAdmin) 

내가하여 장고 - 간단한 역사를 설치 : : 내 admin.py가

from django.db import models 
from simple_history.models import HistoricalRecords 

class Student(models.Model): 
    studentname = models.CharField(max_length=50, verbose_name='Name') 

class ClassRoom(models.Model): 
    classname = models.CharField(max_length=50, verbose_name='Name') 
    students = models.ManyToManyField(Student) 
    history = HistoricalRecords() 

>pip install django-simple-history 

답변

3

이 열려 오래된입니다 질문을하고 지금까지는 관련성이 없을 수도 있지만 문제의 프로젝트 코드를 살펴볼 때 ClassRoom의 마지막 줄과 비슷합니다. m odel은

으로 변경해야합니다.
history = HistoricalRecords(m2m_fields=['students']) 
+0

고마워요. @ShacharSh하지만 마침내 django-reversion을 (를) 사용하기로 결정했습니다. – EricPb

+0

공유해 주셔서 감사합니다. 만약 당신이 내 대답을 확인하고 그것이 당신을 위해 문제를 해결할 수 있다면, 도움이되는 것으로 대답을 표시 할 수 있다면 감사 할 것입니다. – ShacharSh

+0

ShacharSh, 나는 당신이 옳다고 믿습니다. 비록 Kyruus의 코드가 변경되었지만 관리자보기에는 변경 사항이 없기 때문에 상황이 복잡해질 수 있습니다. –