0

私が基本的に達成したいのは、ユーザーが自分のプロファイルを編集すると、空白のフィールドによってすべてが上書きされることです。

例えば:

名が追加され、ユーザーがそれを変更したくない場合、フォーム全体を再入力する必要はありません。変更する必要があるフィールドは名フィールドのみです。フォームが送信されると、他の空白のフィールドによってモデルフィールドが次のようになります。空になります。

これが私が試したものです:

def editUserprofile(request):
    rc = context_instance=RequestContext(request)
    u = request.user
    if request.method=='POST':
        form = UserProfileEdit(request.POST, request.FILES)
        if form.is_valid():
            u = UserProfile.objects.get(user=u)
            if 'avatar' in request.FILES :
                u.avatar = request.FILES['avatar']
            if 'first_name' in request.POST:
                u.first_name = form.cleaned_data['first_name']
            if 'last_name' in request.POST:
                u.last_name = form.cleaned_data['last_name']
            if 'email' in request.POST:
                u.email = form.cleaned_data['email']
            if 'country' in request.POST:    
                u.country = form.cleaned_data['country']
            if 'date_of_birth' in request.POST:
                u.date_of_birth = form.cleaned_data['date_of_birth']
            u.save()
            return HttpResponseRedirect(reverse('photocomp.apps.users.views.editUserprofile'))
    else:
        u = UserProfile.objects.get(user=u)
        form = UserProfileEdit()
    return render_to_response('users/editprofile.html',
                             {'form':form, 'u':u},
                             rc)

モデルのコンテンツを編集せずに、どういうわけか空のフィールドを渡すことはできますか?

それがあなたをそれほど混乱させないことを願っています!

詳細が必要な場合は、教えてください:)事前に感謝します!

4

1 に答える 1

1

これは編集フォームであるため、フィールドに現在の値を事前に入力することを検討する必要があります。これは、コンストラクターに引数を送信することで簡単になりinstanceます(ModelFormを使用している場合)。これにより、値が正しい値で事前に入力され、ユーザーは必要に応じて変更できます。

form = UserProfileEdit(instance=u)

Djangoドキュメントリンク

于 2012-05-13T22:39:15.237 に答える