0

Я использую пакет django_registration_redux для обработки регистрации новых пользователей. Затем у меня есть набор категорий, которые я хочу, чтобы каждый новый пользователь выполнял их по умолчанию. Так что я должен запустить следующий код сразу после того, как объект, созданный пользователем:Как использовать Django Signals для запуска функции после регистрации пользователя?

for category in categories: 
    f = Follow(user=user.username, category=category) 
    f.save() 

После прочтения Джанго Docs, я предположил, что добавление следующий метод в UserProfile модели будет работать:

def follow_def_cat(sender, instance, created, **kwargs): 
    if created: 
     for category in categories: 
      f = Follow(user=instance.username, category=category) 
      f.save() 
    post_save.connect(follow_def_cat, sender=User) 

Но я, кажется, не удалось подключить функцию сохранения пользовательского сигнала к функции.

+1

является то, что фактическая отступы? – Alasdair

+1

Ошибка орфографии в post_save.connect –

+0

Я исправил опечатку, но проблема вызвана отступом. – sheshkovsky

ответ

1

Поместите инструкцию подключения из метода сигнала.

def follow_def_cat(sender, instance, created, **kwargs): 
    if created: 
     for category in categories: 
      f = Follow(user=instance.username, category=category) 
      f.save() 

post_save.connetc(follow_def_cat, sender=User) 

И помните, что follow_def_cat это не метод модели, вы должны создать его на том же уровне, что класс модели:

class UserProfile(models.Model): 

    ... 

def follow_def_cat(sender, ...): 
    ... 

post_save.connect(follow_def_cat, sender=User) 
Смежные вопросы