在 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 类中,但我不知道如何动态管理它们。
任何的想法??
提前感谢您的任何回答。