UpdateView - 特定用户类型的不同字段列表

时间:2016-04-12 07:38:45

标签: python django

我有来自CBV的UpdateView:

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

如何为特定用户类型设置不同的字段列表?

例如:

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

我可以在哪里覆盖它?

1 个答案:

答案 0 :(得分: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