2017-04-17 4 views
0

Ich habe diese Ansicht:wie View-Daten zu verwenden, in django zu füllen bildet

def edit(request): 
    data = {} 
    user = request.user 
    data['requestor'] = user 
    data['user'] = user 
    data['member'] = models.Member.objects.get(User=user) 
    data['Address'] = models.Address.objects.filter(User=user).filter(Primary=True).first() 
    data['Phone'] = models.Phone.objects.filter(User=user).filter(Primary=True).first() 
    data['Family'] = models.Family.objects.filter(Primary=data['member']) 
    data['Sponsor'] = models.Family.objects.filter(Dependent=data['member']).first() 
    data['rank'] = models.Promotion.objects.filter(User=user).latest('Date_Effective') 
    data['form'] = forms.profile 
    return render(request, "member/profile/page_user_edit.html", data) 

ich diese Form bin mit der Ansicht zu arbeiten. Bemerkenswert ist, diese Formularfelder aus mehreren Modellen enthalten, also warum es nicht ein modelform:

class profile(forms.Form): 
    first_name = forms.CharField(label='First Name', max_length=50, widget=forms.TextInput(attrs={'class': 'md-input'})) 
    last_name = forms.CharField(label='Last Name', max_length=50, widget=forms.TextInput(attrs={'class': 'md-input'})) 
    profile_image = forms.FileField() 
    Street = forms.CharField(label='Street Address', max_length=500, widget=forms.TextInput(attrs={'class': 'md-input'})) 
    City = forms.CharField(label='City', max_length=50, widget=forms.TextInput(attrs={'class': 'md-input'})) 
    State = forms.CharField(label='State', max_length=40, widget=forms.TextInput(attrs={'class': 'md-input'})) 
    Zip = forms.CharField(label='Zip', max_length=20, widget=forms.TextInput(attrs={'class': 'md-input'})) 
    County = forms.CharField(label='County', max_length=20, widget=forms.TextInput(attrs={'class': 'md-input'})) 
    Country = forms.CharField(label='Country', max_length=50, widget=forms.TextInput(attrs={'class': 'md-input'})) 
    Country_Code = forms.CharField(label='Country Code', max_length=5, widget=forms.TextInput(attrs={'class': 'md-input'})) 
    Area_Code = forms.CharField(label='Area Code', max_length=5, widget=forms.TextInput(attrs={'class': 'md-input'})) 
    Number = forms.CharField(label='Phone Number', max_length=20, widget=forms.TextInput(attrs={'class': 'md-input'})) 
    Gender = forms.ChoiceField(choices=choices.GENDER_CHOICES) 
    Height = forms.FloatField(widget=forms.TextInput(attrs={'class': 'md-input'})) 
    HairColor = forms.CharField(max_length=10, widget=forms.TextInput(attrs={'class': 'md-input'})) 
    about = forms.Textarea() 
    facebook = forms.CharField(max_length=50, widget=forms.TextInput(attrs={'class': 'md-input'})) 
    twitter = forms.CharField(max_length=50, widget=forms.TextInput(attrs={'class': 'md-input'})) 

in der Vorlage:

<div> 
    <div class="uk-input-group"> 
     <span class="uk-input-group-addon"> 
      <i class="md-list-addon-icon uk-icon-facebook-official"></i> 
     </span> 
     <label>{{ form.facebook.label }}</label> 
     {{ form.facebook }} 
    </div> 
</div> 

Das Etikett und das Formularelement zeigt auf der Seite ohne Probleme, aber ich brauche den aktuellen Wert im Formular. Wie schiebe ich den aktuellen Wert in data['member'].facebook in das Feld form.facebook?

Wie bewerkstellige ich das? Danke.

+0

See: https://docs.djangoproject.com/en/1.10/howto/initial-data/ –

+0

Kannst du das erklären? Wie bekomme ich die Werte in die Formularelemente? – arcee123

Antwort

1

Wenn Sie zuerst eine Form definieren, können Sie es definieren, wie so:

form = forms.profile({ 
     'first_name': first_name, 
     'last_name': last_name, 
     ... 
     }) 

, wo der Schlüssel der Name des Feldes in der Form ist.

Auch nur so nebenbei vorsichtig sein, wenn wie zip als Felder in Ihren Formularen oder Modelle Python builtins mit

+0

Danke. Das funktioniert perfekt ... – arcee123

Verwandte Themen