2010-11-05 61 views
0

我想將first_name,last_nameemail字段添加到UserProfile管理頁面。因此,您可以從UserProfile管理員中更改所有用戶的詳細信息,而不必轉到其他頁面來更改電子郵件和其他字段。在__init__時間將值插入ModelForm字段時間

這是我的自定義表單的外觀:

class CustomProfileForm(forms.ModelForm): 
    first_name = forms.CharField(max_length=30) 
    last_name = forms.CharField(max_length=30) 
    email = forms.EmailField() 

    class Meta: 
     model = UserProfile 

    def __init__(self, *a, **k): 
     super(CustomProfileForm, self).__init__(*a, **k) 
     self.user_instance = None 
     if self.instance: 
      self.user_instance = self.instance.user 

    def clean_first_name(self): 
     self.user_instance.first_name = self.cleaned_data['first_name'] 

    def clean_first_name(self): 
     self.user_instance.last_name = self.cleaned_data['laset_name'] 

    def clean(self): 
     self.user_instance.save() 
     return self.cleaned_data 

class UserProfileAdmin(admin.ModelAdmin): 
    form = CustomProfileForm 

我不知道該怎麼來完成這個東西。我需要將user_instance的詳細信息提供給適當的表單類。

回答

2

要在init方法中設置初始值,您可以使用fields字典。

def __init__(self, *a, **k): 
    # <snip> 
    self.fields[ 'email' ].initial = self.user_instance.email 
    # ... and any others 
+0

我的意思是當用戶的電子郵件,姓氏和名字被添加到文本框中時,窗體顯示。目前只有來自UserProfile對象的信息被添加到綁定表單中。我需要從'Userprofile.user'實例添加數據。 – priestc 2010-11-05 22:41:27

+0

哎呀,我沒有把你的標題和你的問題的主體結合起來。編輯。 – 2010-11-08 14:22:13