2016-04-12 60 views
0

我的UpdateView從CBV:更新視圖 - 不同的字段列表針對特定用戶類型

class AuthorUpdate(UpdateView): 
     model = Author 
     fields = ['name'] 

我如何可以設置特定的用戶類型的不同字段列表?

例如:

if request.user.pk == 1: 
    fields = ['name', 'job', ] 
else: 
    fields = ['name', 'title', ] 

我在哪裏可以覆蓋這個?

+0

只需將模型設置爲特定的模型?我不確定這裏有足夠的信息來回答 – Sayse

+0

您是否想要檢查用戶是員工還是超級用戶? –

+0

@GeorginaS不,我試圖顯示不同的字段在窗體中爲特定的用戶類型或取決於其他對象的值(這不重要)。 – user4812479812

回答

2

這樣做的一個選擇是定義兩個不同的表單類,然後覆蓋get_form_class。您可以通過self.request.user訪問該用戶,然後返回相應的表單類。

class JobForm(forms.ModelForm): 
    class Meta: 
     fields = ['name', 'job'] 

class TitleForm(forms.ModelForm): 
    class Meta: 
     fields = ['name', 'title'] 

class AuthorUpdate(UpdateView): 
    model = Author 

    def get_form_class(self): 
     if self.request.user.pk == 1: 
      return JobForm 
     else: 
      return TitleForm