Jér*_*eot 5 django field dynamic modelform
在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
Run Code Online (Sandbox Code Playgroud)
这个ModelForm可以完成这项工作:我隐藏了模板上的每个字段,并且由于javascript而使它们出现......
问题是这个ModelForm是模型中定义的每个字段都将显示在模板上.
如果不需要,我想从表单中删除它们:
例如:如果用户对模型公司没有权利,则不会在模板中的呈现形式中使用它.
问题是你必须将字段列表放在带有字段或排除属性的表单的Meta类中,但我不知道如何动态地管理它们.
任何的想法??
感谢提前回答任何问题.
只需从self.fields字典中删除它:
if not user.has_perm("blablabla"):
del self.fields["company"]
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
7960 次 |
最近记录: |