0

追加のフィールド 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()これらの追加フィールドを追加する良い方法を使用していますか? そうでない場合、どの方法を使用すればよいでしょうか (何らかの理由で、登録プロセスの実行が非常に遅いようです)。ありがとうございました。

4

1 に答える 1

2

.update()個人的にシグナルを使用して必要な変更を行ったとしても、使用して変更を加えても問題はないと思います。シグナルを使用する利点は、登録ロジックをアプリ関連のロジックから明確に分離できることです。例:無料ユーザープレミアムユーザーなどでモデルが異なる場合など。

登録プロセスは遅くありません。「遅い」のは、おそらく SMTP サーバーがメールを送信するのに時間がかかるためです。送信する必要のあるメールをキューに入れるdjango-mailerを試すことができます。これは非同期プロセスであるため、1 分ごとにメールを送信するには cron が必要です。ただし、メールがすぐに送信されないため、登録プロセスが「速く」なります。

于 2011-05-15T22:09:38.677 に答える