我想在Django 1.8.3中創建一個自定義的用戶註冊表單。我想要實現的是一個基於兩個獨立模型的由兩個獨立表單組成的表單。第一個模型是默認的Django User
模型,基於它的表單包含username
,email
,first_name
,last_name
,password1
和password2
字段。第二個模型是UserDetails
,現在它只包含三個字段 - user
(應存儲外鍵 - 用戶標識),middle_name
和phone_number
。我想創建一個模板,將按照以下順序顯示的這兩種形式的字段:如何從兩個Django表單創建一個字段集合?
username
,email
,phone_number
,first_name
,middle_name
,last_name
,password1
,password2
。
問題是:是否有任何方法可以創建這些字段的列表(或任何其他集合),我可以稍後進行迭代以使它們按此特定順序顯示?我試圖創建的我的形式實例:
registration_form = RegistrationForm()
user_details_form = UserDetailsForm()
和各自領域中我的自定義命令列表:
fields = [registration_form.username,
registration_form.email,
user_details_form.phone_number,
registration_form.first_name,
...]
然後我試圖顯示使用下面的代碼在HTML文件中的字段:
{% for field in fields %}
{{ field }}
{{ field.help_text }}
{{ field.errors }}
{% endfor %}
,但它沒有工作 - 我得到了以下錯誤:
AttributeError at /register 'RegistrationForm' object has no attribute 'username'
謝謝您的回答。現在我明白我的方法是錯誤的(因爲我想堅持一對一的模型形式依賴性,儘管這不是必須的)。擴展我的表單類當然是一個更好的主意。 – Mefael