カスタムフィールドをdjango-registration登録フォーム/フローに追加するという一見単純な問題に対するさまざまな回答が提供されていることに、私はますます当惑しています。これは、パッケージのデフォルトの文書化された側面であるべきですが (恩知らずに聞こえないように、十分に装備されたパッケージであるというだけです)、問題の解決策は目まぐるしいものです。
デフォルトの登録登録ページに含まれる UserProfile モデル データを取得するための最も簡単な解決策を教えてくれる人はいますか?
アップデート:
私は最終的に、Django Registration 独自のシグナルを使用して、このハッキーな修正を行いました。try
空のままにするとチェックボックスが何も返さないことがわかったため、ブール値を処理する POST 属性で使用する必要があったため、特に醜いです。
これを改善するためのアドバイス、またはベストプラクティスをいただければ幸いです。
私のアプリ/models.py
from registration.signals import user_registered
from django.dispatch import receiver
class UserProfile(models.Model):
user = models.OneToOneField(User)
event_commitments = models.ManyToManyField(Event, null=True, blank=True)
receive_email = models.BooleanField(default=True)
@receiver(user_registered)
def registration_active_receive_email(sender, user, request, **kwargs):
user_id = user.userprofile.id
user = UserProfile.objects.get(pk=user_id)
try:
if request.POST['receive_email']:
pass
except:
user.receive_email = False
user.save()
登録アプリ / forms.py
class RegistrationForm(forms.Form):
# default fields here, followed by my custom field below
receive_email = forms.BooleanField(initial=True, required=False)
ありがとう