我试图在django1.8.3中创建一个自定义用户注册表单。我想要实现的是一个表单,它由基于两个独立模型的两个独立表单组成。第一个模型是默认的DjangoUser
模型,基于它的表单包含username
、email
、first_name
、last_name
、password1
和{UserDetails
,目前它只包含三个字段user
(它应该存储一个外键-用户id)、middle_name
和{
username
email
phone_number
first_name
middle_name
last_name
password1
password2
。在问题是:有没有什么方法可以创建这些字段的列表(或任何其他集合),然后我可以迭代这些字段,使它们以特定的顺序显示?我尝试创建窗体的实例:
registration_form = RegistrationForm()
user_details_form = UserDetailsForm()
以及按我的自定义顺序列出的字段:
^{pr2}$然后,我尝试使用以下代码在HTML文件中显示字段:
{% for field in fields %}
{{ field }}
{{ field.help_text }}
{{ field.errors }}
{% endfor %}
但没用-我得到了以下错误:
AttributeError at /register 'RegistrationForm' object has no attribute 'username'
不能简单地使用django的
ModelForm
组合两个表单。在相反,您可以通过添加来自
UserDetails
模型的自定义用户字段来扩展RegistrationForm
类。然后重写所有需要的方法(clean
,save
,等等)以在流中包含这些自定义字段。在要重新排列字段,需要在新表单类中扩展/重写
Meta
类。在示例:
我假设您的
RegistrationForm
表单是基于django的ModelForm
相关问题 更多 >
编程相关推荐