2010-05-29 125 views
1

我伸出RegistrationFormUniqueEmail無法添加自定義字段到Django的註冊

class CustomRegistrationFormUniqueEmail(RegistrationFormUniqueEmail): 
    first_name = forms.CharField(label=_('First name'), max_length=30,required=True) 
    last_name = forms.CharField(label=_('Last name'), max_length=30, required=True) 
    def save(self, profile_callback=None): 
     new_user = super(CustomRegistrationFormUniqueEmail, self).save(profile_callback=profile_callback) 
     new_user.first_name = self.cleaned_data['first_name'] 
     new_user.last_name = self.cleaned_data['last_name'] 
     return new_user 

然後改變視圖

#  form = form_class(data=request.POST, files=request.FILES) 
     form = CustomRegistrationFormUniqueEmail(data=request.POST, files=request.FILES) 

但是,我仍然看到其中只包含四個字段的默認格式。

回答

3

我們最近實現了這樣一個表格。下面是我們做了什麼:

  • 創建一個新的backend(只是將其從默認的後臺複製與啓動)

    registration/ 
        backends/ 
         default/ 
         custom/ # <- your new backend 
    

    ...

  • 在新urls.py調整後端參數

    ... 
    { 'backend': 'registration.backends.custom.DefaultBackend' }, 
    ... 
    
  • 根據custom創建forms.py。調整這種形式的根據自己的喜好(字段和驗證)

  • registration/urls.py點到正確的後端:

    # from registration.backends.default.urls import * 
    from registration.backends.custom.urls import * 
    

這應該工作。特別是這個作品,因爲:

  • custom/__init__.py將有DefaultBackend類與get_form_class方法:

    def get_form_class(self, request): 
        """ 
        Return the default form class used for user registration. 
        """ 
        return RegistrationForm 
    
  • 你導入自己的RegistrationForm在該文件中,也:

    from registration.backends.custom.forms import RegistrationForm 
    
0

我不知道,斷手,爲什麼它不工作,但我敢肯定你做需要編輯的Django登記的views.py ...你可以把你的新CustomRegistrationFormUniqueEmailurls.py參數。

相關問題