In the system I am building user CAN NOT register them selves. The开发者_JAVA百科 users are added by one of the system admins. So there is no user registration form or view. The registration is only being done in the admin so I guess that the send_mail has to be over there also (or am I wrong)?
I need to send an automatic email to the user when he/she is being created and only then (not on every save of the model).
Can any one help with this? Is there a built-in something for that? or how do I do that?
I've read about the create_user user Manager, but I thought there is a better way then editing a manager.
You can register a callback on the post_save signal for the User model. Somewhere along the lines of:
# note: untested code
from django.db.models.signals import post_save
from django.contrib.auth.models import User
def email_new_user(sender, **kwargs):
if kwargs["created"]: # only for new users
new_user = kwargs.["instance"]
# send email to new_user.email ..
post_save.connect(email_new_user, sender=User)
Note the if kwargs["created"]:
condition which checks if this is a newly created User instance.
Use the post_save signal, which has a created
argument sent with the signal. If created is true, send your email.
Edit
Shawn Chin beat me to it. Accept his answer
You can use the signals framework. A post-save signal on User objects will be appropriate, see here for a similar example.
精彩评论