2012-05-22 29 views
0
def get_form(self, request, obj=None, **kwargs): 
    if request.user.is_superuser: 
     self.exclude=[] 
    else: 
     self.fields=['employer_verified'] 
    return super(EmployerAdmin, self).get_form(request, obj, **kwargs) 

我有這樣的代碼覆蓋get_form()方法根據用戶 它工作得很好,以自定義視圖,當超級用戶登錄,但問題是時,顯示該工作人員登錄,然後在超級用戶登錄只有employer_verified我想這個問題是什麼 排除從現在等於「僱主驗證」字段overiding get_form()方法來根據用戶自定義管理視圖

回答

1

你不應該設置self.excludeget_form方法,它不是線程安全的。相反,您可以定義兩種不同的表單類別,並根據user.is_superuser返回正確的表單類別。

class EmployerForm(forms.ModelForm): 
    class Meta: 
     model = Employer 
     fields = ['employer_verified',] 

class EmployerSuperUserForm(forms.ModelForm): 
    class Meta: 
     model = Employer 

def get_form(self, request, obj=None, **kwargs): 
    if request.user.is_superuser: 
     return EmployerSuperUserForm 
    else: 
     return EmployerForm 
     self.fields=['employer_verified'] 
+0

謝謝你的工作完全按照我的意願。 – user1360869

+0

樂意幫忙!請點擊上面的勾號以顯示我已經回答了您的問題。 – Alasdair