django注册表单上的自定义字段

django注册表单上的自定义字段,django,django-forms,django-registration,Django,Django Forms,Django Registration,我已经成功地扩展了基本django注册表单,表单上有自定义字段,它工作正常。现在困扰我的是它的工作方式。我已经用register方法定义了新的后端,扩展了DefaultBackend class MyBackend(DefaultBackend): def register(self, request, **kwargs): 创建了将用户对象作为外键保存的UserProfile模型 class UserProfile(models.Model): user = models.Fo

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

class MyBackend(DefaultBackend):
   def register(self, request, **kwargs):
创建了将用户对象作为外键保存的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中提供的

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

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

因为您调用的注册表单只定义了用户名、电子邮件和密码。为了能够显示您的自定义_字段以及用户名、电子邮件和密码,您必须调用UserRegistrationFormHmm…您是否错过了看到我调用UserRegistrationForm“form_class”:url字符串中的UserRegistrationForm?您忘了在我的form类中放置class Meta:class Meta:model=UserProfile,我只是忘了复制那个部分…我想我知道问题出在哪里了,注册表单实际上不是一个模型表单。。。