0

既に保存されているデータベースからフェッチされた詳細を表示する HTML ページがあります。詳細を編集する必要があり、詳細は古いコンテンツ ID db を置き換える必要があります (つまり、同じフィールドに上書きされます)。私はMySQLデータベースを使用しています。コードを追加しました。フォームを送信すると、データベースに更新されません。このコードが正しいか確認してください。

models.py

class js_details(models.Model):
    user      = models.ForeignKey(User, unique=True)
    #PERSONAL INFO
    fname     = models.CharField(max_length=30)
    contactno = models.IntegerField(max_length=30)
    emailid   = models.EmailField(max_length=30)
    dob       = models.IntegerField(max_length=30)

フォーム.py

class EditForm(forms.ModelForm):
class Meta:
    model = js_details
    exclude = ('user')

ビュー.py

def editresume(request):
    user = request.user
    profile_info = js_details.objects.filter(user_id=user)
    profile_data = { "profile_detail" : profile_info }
    if request.method == "POST":
        edit = EditForm(request.POST, request.FILES, instance = request.user.get_profile())

        if edit.is_valid():
            edit.save()        
            return HttpResponseRedirect('/accounts/Profile/')
    else:
        edit = EditForm(instance = request.user.get_profile())
    return render_to_response('registration/personal_information.html', profile_data, context_instance=RequestContext(request))

個人情報.html

<h4> Personal Details</h4>
<table width="90%" border="0">
    <tr>
        <td width="30%">
            <p> Name </p>
            <p> Contact Number </p>
            <p> Email ID</p>
            <p>DateOfBirth</p>
        </td>
        <td width="30%">
            <p>{% for detail in profile_detail %}{{ detail.fname}} {{ detail.lastname}}{% endfor %}</p>
            <p>{% for detail in profile_detail %}{{ detail.pri_contact }}{% endfor %}</p>
            <p>{{ user.email }}</p>
            <p>{% for detail in profile_detail %}{{ detail.dob }}{% endfor %}</p>
        </td>
        <td width="30%">
            <p><a href="">Edit</a></p>
        </td>
    </tr>
</table>
4

2 に答える 2

2

OK、フォームを含む html ページを表示して、ユーザーが設定を変更できるようにします。

したがって、私たちがやりたいことは次のとおりです。

  1. リクエストがある場合 (つまり、ユーザーがフォームを送信した場合)、それを処理します。
  2. リクエストがない場合は、フォームを表示します。

Django には、(1) フォームを表示し、(2) データのエラーをチェックするのに役立つフォーム ライブラリが組み込まれています。これを操作するための簡単なチュートリアルを次に示します。

これは、これを行うために使用できる疑似コードです。

#views.py

if there is a request (request.method == "POST")
    get your form
    if the data is correct (form.is_valid())
       retreive the data from your form
       save it it your db
    else
       render your html and pass the form you retrieved (that will display errors)
else
    render and pass a blank form

#forms.py

class myform
    different inputs

#html ファイル

{% if form.errors %}
    <p style="color: red;">{{ form.errors}}</p>
{% endif %}

<form action="." method="POST">{% csrf_token %}
    {{ form.as_p }}
<input type="submit" name="formname" value="Edit !">
</form>

詳細が必要な場合は教えてください。

于 2013-04-13T09:08:23.510 に答える
0

js_details の Form o ModelForm を定義する必要があります。このフォームにより、ユーザーは js_details データを編集できます。次に、このフォームを処理して前のフォームからデータベース データを更新する新しいビューを定義します。profile_edit.html で要求されるフォームで、post アクションからこの新しいビューを参照します。

于 2013-04-13T09:05:40.890 に答える