Найти - Пользователи
Полная версия: Подключение профиля пользователя после регистрации через сигналы.
Начало » Django » Подключение профиля пользователя после регистрации через сигналы.
1
Kotakota
Привет.
Есть вопрос по правильному созданию профиля пользователя после его регистрации.
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)
После нажатия “Зарегистрироваться” на форме регистрации, я записываю данные пользователя в модель User и вызываю сигнал:
signals.py
user_profile = django.dispatch.Signal(providing_args=['tarif'])
views.py
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()
Imposeren
ну, похоже на то, что в документации:
https://docs.djangoproject.com/en/dev/topics/auth/#storing-additional-information-about-users

Так-что скорее всего можете считать, что правильно.


Если есть желание, то можете сделать свой сигнал:
https://docs.djangoproject.com/en/1.3/topics/signals/#defining-and-sending-signals
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB