これは私の forms.py スニペットです
class ContactForm(forms.ModelForm):
class Meta:
model = Contact
exclude = ('user',)
これは私のviews.pyスニペットです
def contact(request, template_name):
if request.method == "POST":
form = ContactForm(request.POST)
if form.is_valid():
obj = form.save(commit=False)
obj.user = request.user
obj.save()
return HttpResponseRedirect('/newuser/step2/')
else:
if (Contact.objects.filter(user=request.user)):
contact_obj = Contact.objects.get(user_id=request.user.id)
form = ContactForm(instance = contact_obj)
else:
form = ContactForm()
return render_to_response(template_name, RequestContext(request, {'form' : form}))
登録ユーザーのデータを初めて入力すると、データがテーブルに正常に入力されます。フォームに再度アクセスすると、データベースからのデータが読み込まれますが、再送信すると、以下のエラーが発生します
Exception Type: IntegrityError
Exception Value: (1062, "Duplicate entry '3' for key 'user_id'")
Exception Location: /usr/lib/python2.7/dist-packages/MySQLdb/connections.py in defaulterrorhandler, line 36
私の連絡先テーブルには、自動的に生成された「id」フィールドが主キーとしてあり、「user_id」は外部キー フィールドです。「3」は、ログインしているユーザーの「user_id」です。
私は非常に単純なことをしようとしています。ユーザーのデータをテーブルに保存してリンクします。それを行うより良い方法はありますか?ここで私が間違っているのは何ですか?