2016-04-12 3 views
0

のための異なるフィールドリストは私がCBVから​​UpdateViewがありますか?例えばUpdateView特定のユーザータイプ

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

私はこれをオーバーライドすることができますか?

+0

モデルを特定のモデルに設定するだけですか?私は – Sayse

+0

と答えるのに十分な情報がここにあるかどうか分からないのは、あなたがスタッフかスーパーユーザーかをチェックしようとしているのですか? –

+0

@GeorginaSいいえ、私は、特定のユーザタイプのためにフォームに異なるフィールドを表示しようとしています(これは重要ではありません)。 – user4812479812

答えて

2

これを行う1つのオプションは、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 
関連する問題