gpt4 book ai didi

python - Django 更新 View : define fields dynamically via function instead of a member variable

转载 作者:太空宇宙 更新时间:2023-11-04 09:59:46 25 4
gpt4 key购买 nike

我有一个非常简单的 UpdateView,其中我的字段由成员变量 fields

定义
class DataUpdateView(generic.edit.UpdateView):
template_name = 'data/edit.html'
model = Data
fields = ['title', 'text']
text2 = forms.CharField(widget=forms.Textarea)
success_url = reverse_lazy('data:index')

现在我想根据特殊的用户权限更改字段值,但我不知道如何通过函数(或任何更好的选项)定义字段。

Django 是否可行(我使用的是最新版本)

问候
零陵香 bean

最佳答案

当然可以。这是一个常规的基于类的 View ,这意味着您应该能够覆盖它的方法,如 getpost 并在那里修改字段。

在这种情况下,您希望在所有类型的请求上设置字段,因此添加 dispatch 方法应该是正确的选择:

class DataUpdateView(generic.edit.UpdateView):
template_name = 'data/edit.html'
model = Data
fields = ['title', 'text']
text2 = forms.CharField(widget=forms.Textarea)
success_url = reverse_lazy('data:index')

def dispatch(self, request, *args, **kwargs):
# Check permissions for the request.user here
self.fields = ['title', 'text', 'extrafield']
return super().dispatch(request, *args, **kwargs)

关于python - Django 更新 View : define fields dynamically via function instead of a member variable,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44230834/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com