2013-11-24 75 views
4

我正在嘗試使用django-allauth進行用戶註冊。我有這種形式django-allauth:重新排列表單字段(更改順序)

class UserProfileForm(forms.ModelForm): 
class Meta: 
    model = UserProfile 
    fields = ('gender', 'country', 'city', 'birth_date', 'has_accepted_tos') 

,並按照指示我在settings.py已設置

ACCOUNT_SIGNUP_FORM_CLASS = "userprofile.forms.UserProfileForm" 

的問題是,當表單呈現我的自定義窗體問性別,國別等呈現在頂部,然後是需要用戶名,電子郵件和密碼的標準用戶字段。什麼順序如下:

  • 性別
  • 國家
  • 城市
  • birth_date
  • has_accepted_tos
  • 用戶名
  • 電子郵件
  • 密碼1
  • 密碼2

    我想在這個順序

  • 用戶名

  • 電子郵件
  • 密碼1
  • 密碼2
  • 性別
  • 國家
顯示的字段
+0

請創建第二個問題,另外一個問題..在這裏將其刪除。 – mariodev

+0

好的,我刪除了第二個問題 – voger

回答

6

您需要提供field_order屬性:

class UserProfileForm(forms.ModelForm): 
    class Meta: 
     model = UserProfile 
     fields = ('gender', 'country', 'city', 'birth_date', 'has_accepted_tos') 
     field_order = ['username', 'email', 'password1', 'password2', 'gender', 'country'] 

然而,一個更好的做法是使用模板文件來呈現完全按照您想要的形式。

競標項目作者:

(...)再說,我不會把什麼allauth有 太大的重量,提供開箱即用的顯示/設計的智慧。所有這一切只是爲 參考,這個想法是,您在您的模板中創建一個適當的設計&表格佈局 。

參考文獻:

[1] https://github.com/pennersr/django-allauth/blob/master/allauth/account/forms.py

[2] https://github.com/pennersr/django-allauth/issues/269

+0

謝謝。最後,我去了第二條路線,完全按照我的意願渲染了模板。我只是不知道我能做到這一點。 – voger