0

我已经成功地扩展了基本的 django-registration 表单,表单上有自定义字段,它工作正常。现在困扰我的是,它的工作方式。我已经定义了新的后端与扩展 DefaultBackend 的注册方法

class MyBackend(DefaultBackend):
   def register(self, request, **kwargs):

创建了将 User 对象作为外键保存的 UserProfile 模型

class UserProfile(models.Model):
    user = models.ForeignKey(User, unique=True)
    custom_filed = models.CharField(max_length=200, blank=True) 

和定义的形式

class UserRegistrationForm(RegistrationForm):
    custom_field = forms.CharField(widget=forms.TextInput(attrs=attrs_dict))

    model = UserProfile

网址中提供的

url(r'^accounts/register/$',  register, {'backend': 'app.regbackend.MyBackend','form_class':UserRegistrationForm},name='registration_register')

它工作正常,custom_field 以我在注册方法中定义的方式保存。令我困扰的是注册表单(模板)仅显示在RegistrationForm(用户名,电子邮件,密码)模型中定义的字段,我必须将我的custom_field手动添加到表单类。我不明白为什么会这样,因为模型属性指向UserProfile,如果我custom_field从表单类中删除它就不会显示。为什么会这样?

4

0 回答 0