Це старий, має прийняту відповідь, яка працює (Зака), і більш ідіоматичну також (Майкл Билстра), але оскільки це все ще перший результат у Google, який бачить більшість людей, я думаю, що нам потрібен більше найкращих практик modern-django відповідь стилю тут :
from django.db.models.signals import post_save
class MyModel(models.Model):
@classmethod
def post_create(cls, sender, instance, created, *args, **kwargs):
if not created:
return
post_save.connect(MyModel.post_create, sender=MyModel)
Справа в наступному:
- використовувати сигнали (докладніше читайте тут в офіційних документах )
- використовуйте метод для приємного простору імен (якщо це має сенс) ... і я позначив його як
@classmethod
замість, @staticmethod
тому що, швидше за все, вам в кінцевому підсумку знадобиться посилати статичні члени класу в коді
Ще чистіше було б, якби основний Django мав реальний post_create
сигнал. (Імхо, якщо вам потрібно передати логічний аргумент, щоб змінити поведінку методу, це має бути 2 методи.)