Есть вопрос по правильному созданию профиля пользователя после его регистрации.
models.py
class Profile(models.Model):
# user login
user = models.ForeignKey(User, unique=True)
# user tarif
tarif = models.ForeignKey(Tariff)
# active status
active = models.BooleanField(default=False)
@receiver(signals.user_profile,sender=User,dispatch_uid='user_profile')
def create_profile(sender,tarif,user,**kwargs):
Profile(user=user,tarif=tarif)
signals.py
user_profile = django.dispatch.Signal(providing_args=['tarif'])
try:
tarif = Tarif.objects.get(slug=name)
except Tarif.DoesNotExist:
return redirect('tarif')
user_instance = form.save()
signals.user_profile.send(sender=User,tarif=tarif,user=user_instance)
1. Это работает! Но правильно ли я делаю?
2. Пробовал вместо создания и вызова своего сигнала, вешать обработчик на post_save модели User.
Но в этом случае, я не знаю как передать параметры, например “tarif”:
models.py
@receiver(models.signals.post_save, sender=User)
def create_profile(sender,instance,signal,created,**kwargs):
# Как здесь получить tarif??
from apps.account.models import Profile
if created:
Profile(user=instance).save()