2017-06-29 8 views
0

Ich möchte das Attribut readonly zu einem der Formularfelder hinzufügen. Dies ist ein Teil meiner forms.py Datei:Django - Formularfelderattribute für den angemeldeten Benutzer

class SiteAddFormFull(forms.ModelForm): 
    def __init__(self, *args, **kwargs): 
     super(SiteAddFormFull, self).__init__(*args, **kwargs) 

     self.fields['group'] = forms.ModelChoiceField(
      queryset=Group.objects.filter(is_active=True), initial='Podstawowy', 
      help_text="<div id='group'><ul><li>Sample text</b></li></ul></div>", 
      label="Rodzaj wpisu") 

    url = forms.URLField(widget=forms.TextInput(attrs={'readonly': 'readonly'}), 
        label='Adres internetowy') 
    kod = forms.CharField(label="Kod premium", required=False) 
    user = forms.CharField(label="Nazwa użytkownika", 
widget=forms.TextInput(attrs={'readonly': 'readonly'})) 
    if user_is_authenticated: 
     email = forms.EmailField(label="Email adress", 
widget=forms.TextInput(attrs={'readonly': 'readonly'})) 
    name = forms.CharField(widget=forms.TextInput(attrs={'style': 'min-width:30%'})) 

Ich mag würde nur lesbar hinzufügen Attributfeld E-Mail. Ich habe keine Ahnung, wie ich das Authentifizierungssystem hier benutzen könnte. Was sollte ich anstelle von user_is_authenticaded setzen? Danke für Hinweise.

Antwort

0

Ok. Ich fügte hinzu:

email = self['email'].value() 

if email is not None: 
    self.fields['email'].widget.attrs.update({'readonly': 'readonly'}) 

unter super(SiteAddFormFull, self).__init__(*args, **kwargs)

Jeder Benutzer hat E-Mail-Feld. Es funktioniert gut. Eine Stunde Versuche und Fehler ... Es ist gelöst. Vielen Dank.

Verwandte Themen