В проекте Django + Wagtail у меня есть собственный метод, который я вызываю из метода модели save()
. Это работает - но каждый раз, когда я сохраняю экземпляр через интерфейс администратора трясогузки, этот метод вызывается дважды - почему?
# models.py
from wagtail.core.models import Page
class ArticlePage(Page):
def my_method(self):
print('I will be printed twice on save...')
def save(self, *args, **kwargs):
self.my_method()
super().save(*args, **kwargs)
Используя traceback.print_stack
, как предложено Håken Lid Я обнаружил, что метод сначала вызывается через
File ".../.venv/lib/python3.6/site-packages/wagtail/admin/views/pages.py", line 336, in edit
submitted_for_moderation=is_submitting,
File ".../.venv/lib/python3.6/site-packages/wagtail/core/models.py", line 653, in save_revision
self.save(update_fields=update_fields)
и второй раз через
File ".../.venv/lib/python3.6/site-packages/wagtail/admin/views/pages.py", line 343, in edit
revision.publish()
File ".../.venv/lib/python3.6/site-packages/wagtail/core/models.py", line 1498, in publish
page.save()
Но даже с учетом этой информации я не знаю, как вызвать только мой метод при втором сохранении ...
ENV:
Джанго 2.0.4
Трясогузка 2.0.1