gpt4 book ai didi

django - 从动态 ModelForm 中删除字段

转载 作者:行者123 更新时间:2023-12-02 03:00:06 25 4
gpt4 key购买 nike

在模型表单中,我必须测试用户权限以让他们填写正确的字段:

它的定义是这样的:

class TitleForm(ModelForm):    
def __init__(self, user, *args, **kwargs):
super(TitleForm,self).__init__(*args, **kwargs)
choices = ['','----------------']
# company
if user.has_perm("myapp.perm_company"):
self.fields['company'] = forms.ModelChoiceField(widget=forms.HiddenInput(),
queryset=Company.objects.all(), required=False)
choices.append(1,'Company')
# association
if user.has_perm("myapp.perm_association")
self.fields['association'] =
forms.ModelChoiceField(widget=forms.HiddenInput(),
queryset=Association.objects.all(), required=False)
choices.append(2,'Association')
# choices
self.fields['type_resource'] = forms.ChoiceField(choices = choices)

class Meta:
Model = Title

这个 ModelForm 完成了工作:我隐藏了模板上的每个字段,并通过 javascript 让它们出现...
问题是这个ModelForm是模型中定义的每个字段都会显示在模板上。
如果不需要,我想将它们从表单中删除:
示例:如果用户对模型公司没有权限,则不会在模板的渲染表单中使用它。

问题是您必须将字段列表放入带有 fieldsexclude 属性的表单的 Meta 类中,但我不知道如何动态管理它们。

有什么想法吗?
预先感谢您的任何答复。

最佳答案

只需从 self.fields 字典中删除它即可:

if not user.has_perm("blablabla"):
del self.fields["company"]

关于django - 从动态 ModelForm 中删除字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2514802/

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