2016-02-28 3 views
0

У меня есть 2 классов:модель не создает Verion после удаления внешнего ключа модели объекта (Джанго-реверсии)

class ContactInternal(models.Model): 
    name = models.CharField(max_length=80) 
SysAppApp = apps.get_app_config('SysApp') 
SysAppModel = SysAppApp.models 
reversion.register(ContactInternal, follow=["fk_contactinternal_sysapp"]) 
reversion.register(SysAppModel) 

# SysApp from another app called 'SysApp' 
class SysApp(models.Model): 
    name = models.CharField(max_length=80) 
    internalcontact = models.ForeignKey(ContactInternal, related_name='fk_contactinternal_sysapp', null=True, verbose_name="Internal Contact",blank=True,on_delete=models.SET_NULL) 

Это работает отлично большую часть дела. например когда я вношу изменения в ContactInternal, в SysApp выдается новая версия. Доволен тем, как это работает.

Однако, если я удалю запись, связанную с SysApp.internalcontact, для SysApp не создается версия.

Фактически все, что я хочу достичь, - это получить временную метку последней измененной даты SysApp и с помощью которой пользователь (не нужно откатываться). Я хочу знать,

'When Peter delete a John from ContactInternal on 26th Feb, it will show Peter updated SysApp on 26th Feb' 

Как я могу сделать это с django-reversion? Или есть другой способ добиться этого?

  • Примечание: в SysApp есть другое поле, которое является M2M. Я хотел бы получить тот же результат.
+0

спасибо @ ilse2005 – DSO

ответ

0

Найдено решение:

Есть 3 шагов, необходимых: 1) добавить 'reversion.middleware.RevisionMiddleware' в MIDDLEWARE_CLASSES в settings.py 2) создают pre_delete сигнальную функцию для просмотра SysApp объект 3) явный вызов Save() для SysApp OBJ

Некоторые объяснений: 1) При добавлении к промежуточному любые изменения в вашей модели будут добавлены к истории изменений 2) использовать сигнал pre_delete, чтобы найти объект SysApp (родительский) 3) вызов сохранить(), чтобы заставить Джанго-реверсии, чтобы создать ревизию

Некоторые ссылки: Джанго-реверсии документации: http://django-reversion.readthedocs.org/en/latest/api.html быстрый пример с использованием сигнала: http://www.koopman.me/2015/01/django-signals-example/

 Смежные вопросы

  • Нет связанных вопросов^_^