from django.contrib.auth.models import User
from django.db.models.signals import post_save
def save_profile(sender, instance, **kwargs):
instance.profile.save()
post_save.connect(save_profile, sender=User)
这里signal参数可以是一个信号实例(Signal instance)或者是一个信号实例的列表/元组(a list/tuple of Signal instances)。
from django.contrib.auth.models import User
from django.db.models.signals import post_save
from django.dispatch import receiver
@receiver(post_save, sender=User)
def save_profile(sender, instance, **kwargs):
instance.profile.save()
from django.contrib.auth.models import User
from django.db.models.signals import post_save
from django.dispatch import receiver
from cmdbox.profiles.models import Profile
@receiver(post_save, sender=User)
def create_user_profile(sender, instance, created, **kwargs):
if created:
Profile.objects.create(user=instance)
@receiver(post_save, sender=User)
def save_user_profile(sender, instance, **kwargs):
instance.profile.save()
profiles/app.py:
from django.apps import AppConfig
from django.utils.translation import ugettext_lazy as _
class ProfilesConfig(AppConfig):
name = 'cmdbox.profiles'
verbose_name = _('profiles')
def ready(self):
import cmdbox.profiles.signals # noqa
from cmdbox.profiles.models import Profile
def create_user_profile(sender, instance, created, **kwargs):
if created:
Profile.objects.create(user=instance)
def save_user_profile(sender, instance, **kwargs):
instance.profile.save()
profiles/app.py:
from django.apps import AppConfig
from django.contrib.auth.models import User
from django.db.models.signals import post_save
from django.utils.translation import ugettext_lazy as _
from cmdbox.profiles.signals import create_user_profile, save_user_profile
class ProfilesConfig(AppConfig):
name = 'cmdbox.profiles'
verbose_name = _('profiles')
def ready(self):
post_save.connect(create_user_profile, sender=User)
post_save.connect(save_user_profile, sender=User)