NS78
@NS78 (NS)

Are you sure you want to delete the question?

If your question is resolved, you may close it.

Leaving a resolved question undeleted may help others!

We hope you find it useful!

Django 登録した情報を編集したい 初心者

解決したいこと

form.pyで作成したフォームクラスで登録した内容を、同じフォームを利用し編集したいです。登録情報の一覧ページを作成し、idは取ってきて、そのidからどうやってform.pyのフォームクラスに渡せばよいのかがわかりません。適当に"objectsget()"でオブジェクト取得して、渡してみたものの上手くいきませんでした。

お忙しいところ恐縮ですがアドバイスいただけると嬉しいです。Djangoのチュートリアルを終了したばかりで、まだそこまで理解しておりませんが、何卒宜しくお願い致します。

form.py

class registerForm(forms.Form):

    name = forms.CharField(
        label='Name', 
        widget=forms.TextInput(attrs={'class':'form-control'})
        )

    mail = forms.EmailField(
        label='Mail', 
        widget=forms.TextInput(attrs={'class':'form-control'})
        )

    address = forms.EmailField(
        label='Address',
        required=False,
        widget=forms.TextInput(attrs={'class':'form-control'})
        )

view.py

# num -> データベースに登録したid
def edit(request, num):
    # オブジェクト取得して渡せばよい?
    obj = user_mst.objects.get(id=num)

    if (request.method == 'POST'):
        friend = registerForm(request.POST, obj)
        friend.save()
        return redirect(to='/monitor')

    params = {
        'title': '編集',
        'id':num,
        'form': registerForm(obj),
    }

    return render(request, 'monitor/edit.html', params)
0

1Answer

もし、アクセスしているユーザーの情報を取得したい場合は

def edit(request):

    user = request.user

    if request.method == 'POST':
        form = registerForm(request.POST, request.FILES, instance=user)
        if form.is_valid():
            form.save()
            return redirect(to='/monitor')
    else:
        form = registerForm(
            initial={
                'name':user.name,
                'email':user.email,
                'address':user.address,
            }
    params = {
        ...省略
    }
    render(request, 'monitor/edit.html', params)

こんな感じでどうでしょうか?

0Like

Your answer might help someone💌