Как я могу запустить некоторый код, когда метод сохранения модели Django вызывается впервые? - PullRequest
5 голосов
/ 19 января 2012

Я мог бы поклясться, что прочитал вопрос об этом раньше, но не могу его найти, поэтому:

В Django, как я могу запустить некоторый код, когда экземпляр новой модели сохранен вбаза данных?

Я знаю, что могу написать собственный метод MyModel().save() для запуска некоторого кода при каждом сохранении экземпляра модели.Но как запустить код только при первом сохранении экземпляра модели?

Ответы [ 2 ]

5 голосов
/ 21 января 2012

Поначалу мне трудно было документировать документацию по Django, вот более явный пример

from django.db.models.signals import post_save
from yourapp.models import YourModel

def model_created(sender, **kwargs):
    the_instance = kwargs['instance']
    if kwargs['created']:
        do_some_stuff(the_instance)

post_save.connect(model_created, sender=YourModel)
4 голосов
/ 19 января 2012

Ах да: сигнал post_save передает аргумент с именем created, который равен True, если его экземпляр был создан путем вызова save().

...