Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/322.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python UpdateView-特定用户类型的不同字段列表_Python_Django - Fatal编程技术网

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

Python UpdateView-特定用户类型的不同字段列表,python,django,Python,Django,我从CBV获得了更新视图: class AuthorUpdate(UpdateView): model = Author fields = ['name'] 如何为特定的用户类型设置不同的字段列表 例如: if request.user.pk == 1: fields = ['name', 'job', ] else: fields = ['name', 'title', ] 我在哪里可以重写它?一个选项是定义两个不同的表单类,然后重写。您可以

我从CBV获得了更新视图:

class AuthorUpdate(UpdateView):
        model = Author
        fields = ['name']
如何为特定的用户类型设置不同的字段列表

例如:

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

我在哪里可以重写它?

一个选项是定义两个不同的表单类,然后重写。您可以使用
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

一种方法是定义两个不同的表单类,然后重写。您可以使用
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

只需将模型设置为特定的模型?我不确定这里是否有足够的信息来回答您是否正在尝试检查用户是员工还是超级用户?@GeorginaS否,我正在尝试根据特定的用户类型或其他对象值(这并不重要)在表单中显示不同的字段。只需将模型设置为特定的?我不确定这里是否有足够的信息来回答您是否要检查用户是staff还是super user?@GeorginaS否,我正在尝试为特定的用户类型或其他对象值以不同的形式显示不同的字段(这并不重要)。