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 クラスにフィールドのリストを配置する必要があることですが、それらを動的に管理する方法がわかりません。
何か案が??
ご回答ありがとうございます。