如何在 UpdateView 中为不同类型的用户更改模型?我有Student
,Teacher
从AbstractBaseUser
继承而来,我需要为他们编辑
class EditUser(UpdateView):
success_url = '/success/'
template_name = 'edit-profile.html'
model = Teacher (I need to choose this Teacher or Student)
我知道get_template_names(self)
方法或get_success_url(self)
,但找不到任何get_model
方法。我需要一些像:
def get_model_name(self):
if self.request.user.user_type == 'teacher':
return Teacher
if self.request.user.user_type == 'student':
return Studend
谢谢。
根据 Django 文档:
model
此视图将显示其数据的模型。指定
model = Foo
实际上与指定queryset = Foo.objects.all()
相同, 其中objects
代表Foo
的默认管理器。
queryset
表示对象的
QuerySet
。如果提供,则值queryset
取代为model
提供的值。
get_queryset()
返回将用于检索对象的查询集 将显示此视图。默认情况下,
get_queryset()
返回值 的queryset
属性(如果已设置),否则构造 通过对模型属性的默认值调用all()
方法进行QuerySet
经理。
因此,您所需要的只是重新定义get_queryset
方法