Как заставить работать 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?