在 ModelForm 中,我必须测试用户权限以让他们填写正确的字段:
它的定义如下:
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是模型中定义的每个字段都会显示在模板上。
如果不需要,我想将它们从表单中删除:
示例:如果用户对模型公司没有权限,则不会在模板的渲染表单中使用它。
问题是您必须将字段列表放入表单的 Meta 类中fields or exclude属性,但我不知道如何动态管理它们。
任何想法??
预先感谢您的任何答复。
只需将其从自我领域 dict:
if not user.has_perm("blablabla"):
del self.fields["company"]
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)