В 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, то, что каждое поле, определенное в модели, будет отображено на шаблоне.
Я хотел бы удалить их из формы, если они не нужны:
exemple: если пользователь не будет иметь никакого права на модели Company, то она не будет использоваться это в представленной форме в шаблоне.
Проблема этого - Вы, должны поместить список полей в Метаклассе формы с полями или исключить атрибут, но я не знаю, как управлять ими динамично.
Какая-либо идея??
Спасибо усовершенствованием для любого ответа.
Просто удалите его из self.fields dict:
if not user.has_perm("blablabla"):
del self.fields["company"]