ビュー.py
def addbook(request):
if request.POST:
book_form = BookForm(request.POST)
author_form = AuthorForm(request.POST)
if (book_form.is_valid() and author_form.is_valid()):
log.debug("test....")
book=book_form.save()
author=author_form.save()
author.book=book
author.save()
return redirect('/index/')
else:
book_form=BookForm()
author_form=AuthorForm()
return render_to_response('addbook.html',{'form':book_form,'form':author_form},context_instance=RequestContext(request))
フォーム.py
from django import forms
from django.forms import ModelForm
from myapp.models import Book,Author
class AuthorForm(ModelForm):
class Meta:
model = Author
fields=['author_id','first_name','last_name','email','age']
class BookForm(ModelForm):
class Meta:
model = Book
fields=['book_id','book_name','publisher_name','author']
models.py
from django.db import models
class Author(models.Model):
author_id = models.AutoField(primary_key=True)
first_name = models.CharField(max_length=30)
last_name = models.CharField(max_length=40)
email = models.EmailField()
age=models.IntegerField()
class Meta:
db_table=u'Author'
def __unicode__(self):
return u"%d %s %s %s %d" % (self.pk, self.first_name, self.last_name, self.email,self.age)
class Book(models.Model):
book_id=models.AutoField(primary_key=True,unique=True)
book_name=models.CharField(max_length=30)
publisher_name=models.CharField(max_length=40)
author=models.ForeignKey(Author)
class Meta:
db_table = u'Book'
def __unicode__(self):
return u'%d %s %s' % (self.pk, self.book_name, self.publisher_name)
templates.html
<div align="center">
<form action="/addbook/" method="post">
{% csrf_token %}
{{ book_form.as_p }}
{{ author_form.as_p }}
<input type="submit" value="submit">
</form>
ここでは、作成者を foriegnkey として使用しています。フォームでは、データベース内のすべてのフィールドにフィールドを指定しました。送信ボタンをクリックすると、作成者フィールドとともにフィールドが表示されます。ここで、author テーブルの author_id は book テーブルの author_id を指しています。views.py では、それをどのように実装できますか。
この方法でデータをデータベースに保存することを期待しています。テンプレートも変更しました。