Это старый, есть принятый ответ, который работает (Зак), а также более идиоматический (Майкл Билстра), но поскольку это все еще первый результат в Google, который видит большинство людей, я думаю, нам нужно больше передовых методов современного 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
сигнал. (Imho, если вам нужно передать логический аргумент, чтобы изменить поведение метода, это должно быть 2 метода.)