2017-04-17 4 views
0

私はこの見解を持っている:Djangoのフォームに記入するビューのデータを使用する方法

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) 

私はビューで動作するように、このフォームを使用しています。それは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'})) 

<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> 

ラベルとフォーム要素が滞りなくページに示し、私はフォームにCurrent値が必要です。 data['member'].facebookに保存されている現在の値をform.facebookフィールドにプッシュするにはどうすればよいですか?

どうすればよいですか?おかげさまで あなたが最初の形式を定義する際

+0

を参照してください:https://docs.djangoproject.com/en/1.10/howto/initial-data/ –

+0

あなたは説明できますか?どのようにフォーム要素に値を取得するのですか? – arcee123

答えて

1

、あなたにそれを定義することができます。キーは、フォーム内のフィールドの名前です

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

を。また

、フォーム内のフィールドやモデルとしてzipのようなPythonの組み込みコマンドを使用するときに脇に注意してくださいと同じように

+0

ありがとうございます。これは完全に動作します... – arcee123

関連する問題