﻿id	summary	reporter	owner	description	type	status	component	version	severity	resolution	keywords	cc	stage	has_patch	needs_docs	needs_tests	needs_better_patch	easy	ui_ux
10186	"""post_create"" or ""post_first_save"" signal"	bmjames	nobody	"It would be useful to have a built-in signal emitted when a model instance is saved *for the first time*. For example, when I post a new article on my site I want to announce it via Twitter, but I don't want it announced again if I edit the article later.

There are some cases where using the pre_save signal, and checking if the id of the instance is None, is not sufficient. For example, if the URL of the article I want to announce on Twitter contains the article's ID, I can't announce the URL of the article because that ID is not yet known at the time of the pre_save signal.

By the time the post_save signal is emitted, I can't tell whether it was the first time the article was saved if I use only the built-in signals. I must check if the ID of the instance is None before it is saved, store that stateful information somewhere, then access that information on post_save when I am finally able to dispatch the announcement. But this is messy and, in my opinion, far too much of a logical dance for a simple requirement.

The only elegant way I have found is to create my own custom signal which is sent in the model's save() method:


{{{
    def save(self):
        first_save = False
        if self.id is None:
            first_save = True
        Model.save(self)
        if first_save:
            post_create.send(sender=Post, instance=self)

}}}


I believe this should be a common-enough case to warrant a built-in signal, rather than needing to override the save() method in many models."		closed	Uncategorized	1.0		invalid			Unreviewed	0	0	0	0	0	0
