Как заставить работать Django-Simple-History с Tastypie?

Мне нужно хранить полную историю изменений, внесенных в объекты. Я считаю, что django-simple-history очень привлекательна, но она не работает с django-tastypie. Если я отправляю данные в API с помощью PUT (обновить объект), объект обновляется, но записи истории не обновляются. Если я изменяю объекты вручную через "./manage.py shell", все работает нормально. Похоже, вкусный пирог обходит сигналы или что-то.

Любые идеи, как я мог заставить это работать как ожидалось?

1 ответ

Не видя ваш код, я попытаюсь решить этот вопрос аналитически.

Глядя на django-simple-history, кажется, что проект действительно создает объекты истории по сигналам post_save / post_delete и предоставляет доступ к ним с помощью пользовательского подкласса model.Manager.

Мне кажется, что ресурс, который сохраняет TastyPie, является ModelResource, а не вашим фактическим экземпляром Model. Эта модель прокси знает об orm и выполняет все запросы к ней.

Так что я думаю, что происходит в simple_history/models.py в том, что contribute_to_class метод объявляет models.signals.class_prepared.connect(self.finalize, sender=cls) но этот сигнал никогда не срабатывает, так как TastyPie не инициализирует экземпляр модели...

Это кажется таким странным, и я не могу понять, почему TastyPie делает это, или, может быть, я что-то неправильно понимаю? Почему бы вам не попытаться открыть проблему в репозитории github?

Другие вопросы по тегам