5
在的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
这的ModelForm做的工作:我隐藏模板上的每个字段,并让它们出现在JavaScript中...
问题是这个ModelForm是模型中定义的每个字段都将显示在模板上。
如果不需要它们,我想将它们从表单中删除:
例如:如果用户对模型Company没有权限,则不会将其用于模板中的呈现表单中。
的那个问题是你必须把字段列表在Meta类的形式与领域或排除属性,但我不知道如何动态地管理它们。
任何想法?
感谢提前任何答案。
是的,很明显!!!!只需要定义Meta类中的所有字段,然后删除即使不是有用的... 非常感谢! – 2010-03-25 15:54:42
如果您在例如ModelAdmin中指定了字段集,这将不起作用。 – 2013-05-13 08:34:34