Уведомления

Группа в Telegram: @pythonsu
  • Начало
  • » Django
  • » Подключение профиля пользователя после регистрации через сигналы. [RSS Feed]

#1 Янв. 30, 2012 04:38:24

Kotakota
От:
Зарегистрирован: 2011-06-06
Сообщения: 40
Репутация: +  0  -
Профиль   Отправить e-mail  

Подключение профиля пользователя после регистрации через сигналы.

Привет.
Есть вопрос по правильному созданию профиля пользователя после его регистрации.
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()



Отредактировано (Янв. 30, 2012 04:43:10)

Офлайн

#2 Янв. 30, 2012 06:48:05

Imposeren
От:
Зарегистрирован: 2009-04-06
Сообщения: 46
Репутация: +  1  -
Профиль   Отправить e-mail  

Подключение профиля пользователя после регистрации через сигналы.

ну, похоже на то, что в документации:
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



Отредактировано (Янв. 30, 2012 06:48:35)

Офлайн

  • Начало
  • » Django
  • » Подключение профиля пользователя после регистрации через сигналы.[RSS Feed]

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version