Использование .update () для добавления дополнительных полей в django-регистрации? - PullRequest
0 голосов
/ 15 мая 2011

Я добавил дополнительные поля first_name и last_name в django-registration, и начал работать следующим образом -

# `registration/backends/default/__init__.py`

from django.contrib.auth.models import User

class DefaultBackend(object):

    def register(self, request, **kwargs):
       username, email, first_name, last_name, password = 
       kwargs['email'], kwargs['email'], kwargs['first_name'], kwargs['last_name'], kwargs['password1']
       if Site._meta.installed:
          site = Site.objects.get_current()
       else:
          site = RequestSite(request)

       new_user = RegistrationProfile.objects.create_inactive_user(username, email,
                                                                   password, site)

       # to create the additional first_name, last_name fields
       additional = User.objects.filter(username=username).update(first_name=first_name, last_name=last_name)

       signals.user_registered.send(sender=self.__class__,
                                 user=new_user,
                                 request=request)
       return new_user

Является ли использование .update() хорошим способом добавления этих дополнительных полей?Если нет, то какой метод лучше использовать (по какой-то причине процесс регистрации выглядит довольно медленным)?Спасибо.

1 Ответ

2 голосов
/ 16 мая 2011

Я думаю, нет проблем, если вы используете .update() для внесения изменений, хотя я бы лично использовал сигналы, чтобы сделать необходимое.Преимущество использования сигналов состоит в том, что вы можете четко отделить логику регистрации от логики, связанной с вашим приложением.Например: если у вас были разные модели для Free User и Премиум-пользователь и т. Д. Или что-то в этом роде.

Процесс регистрации НЕ медленный.«Медлительность», скорее всего, связана с тем, что SMTP-серверу требуется время для отправки почты.Вы можете попробовать django-mailer , который ставит в очередь письма, которые необходимо отправить.Поскольку это асинхронный процесс, вам потребуется cron для отправки писем каждую минуту или около того.Но это ускорит процесс регистрации, поскольку электронные письма не будут отправлены немедленно.

...