Entfernen von Feldern aus einem dynamischen ModelForm

In eine ModelForm, ich habe zu test-Benutzer-Berechtigungen, ließ Sie füllen Sie die richtigen Felder :

Es ist wie folgt definiert:

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  

Dieser ModelForm die Arbeit macht : ich verstecken jedes Feld auf der Vorlage und machen Sie erscheinen Dank javascript...

Das problem ist, diese ModelForm ist, dass jeder Bereich definiert in dem Modell werden auf der Vorlage angezeigt wird.

Ich möchte, um Sie zu entfernen aus der form, wenn Sie nicht benötigt werden:

Beispiel : wenn der Benutzer hat kein Recht auf die Modell-Unternehmen, es nicht verwendet werden, die es in der gerenderten form in der Vorlage.

Das problem ist, dass Sie haben, um die Liste der Felder, die in die Meta-Klasse des Formulars mit Felder oder ausschließen Attribut, aber ich weiß nicht, wie Sie zu verwalten und dynamisch.

Irgendeine Idee??

Vielen Dank im Voraus für jede Antwort.

Schreibe einen Kommentar