我有来自CBV的UpdateView:
class AuthorUpdate(UpdateView):
model = Author
fields = ['name']
如何为特定用户类型设置不同的字段列表?
例如:
if request.user.pk == 1:
fields = ['name', 'job', ]
else:
fields = ['name', 'title', ]
我可以在哪里覆盖它?
答案 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