对于将自定义字段添加到 django-registration 注册表单/流程这一看似简单的问题,我对提供的答案范围越来越感到困惑。这应该是该软件包的默认记录方面(听起来不是忘恩负义,只是因为它是一个装备精良的软件包),但该问题的解决方案令人眼花缭乱。
谁能给我最简单的解决方案来获取默认注册注册页面中包含的 UserProfile 模型数据?
更新:
我最终使用了 Django Registration 自己的信号来给我这个 hacky 修复。它特别难看,因为我不得不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)
谢谢