2015-05-08 2 views
0

Я использую django-simple-history для записи истории изменений в моделях баз данных. Когда я изменяю определенное значение из истории модели, это видно на панели администратора. Но когда значение изменено или изменено из приложения, история не отображается на панели администратора. Есть что-то, чего мне не хватает.django простая история не работает при изменении с приложения

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

class AcademicYear(models.Model): 
    academic_year_start = models.PositiveIntegerField(blank=False, null=False, max_length=4) 
    academic_year_end = models.PositiveIntegerField(blank=False, null=False, max_length=4) 
    history = HistoricalRecords() 


    def __unicode__(self): 
     return "%s-%s" % (self.academic_year_start, self.academic_year_end) 

class Activity(models.Model): 
    activity_name = models.CharField(max_length=100, blank=False) 
    history = HistoricalRecords() 

    def __unicode__(self): 
     return "%s" % self.activity_name 

Обновление


Я исследовал мой В воззрениях вместо .save() Я использую .update() для обновления своих модельных значений.

activity_obj_list = Activity.objects.filter(activity_name=name) 
activity_obj_list.update(activity_name=new_activity_name) 

Функция обновления не создает журнал истории. Это какая-то ошибка?

+0

ли вы установили промежуточное? 'simple_history.middleware.HistoryRequestMiddleware' – karthikr

+0

Я установил simple_history.middleware.HistoryRequestMiddleware в файле настроек. – vdkotian

ответ

1

Это не ошибка, это ожидаемое поведение, потому что .update() не отправляет сигналы сохранения до/после сохранения. Если вы хотите, чтобы история срабатывать итерацию через QuerySet выполнения save(), а не с помощью .update()

for obj in queryset: 
    obj.field1 = some_value 
    obj.save()