在我的views.py
中def addinfo(request):
profile_form = ProfileForm()
book_form = BookForm(instance=Profile())
if request.POST:
profile_form=ProfileForm(request.POST)
if profile_form.is_valid():
profile=Profile_form.save()
book_form=BookForm(request.POST,instance=profile)
if book_form.is_valid():
book_form.save()
models.py是
class Profile(models.Model):
profile_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'Profile'
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)
profile=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)
这是为了将数据保存到两个不同的模型中,我在此使用表单。一个模型得到更新,另一个表数据没有被插入。没有保存页面得到刷新。什么是问题。
答案 0 :(得分:2)
如果我明白你要做什么,你应该替换
book_form=BookForm(request.POST,instance=profile)
与
book = Book(profile_id=profile.id)
# EDIT shameless copy and paste from Catherine's answer to avoid "profile_id not defined" error
book_form=BookForm(request.POST,instance=book)
if book_form.is_valid():
book_form.save()
<小时/> 的修改: 作为替代方案,您可以更改
Book
模型以使实例可选:
profile=models.ForeignKey(Author, null=True)
以这种方式,您的视图将变为:
def addinfo(request):
profile_form = ProfileForm()
book_form = BookForm()
if request.POST:
profile_form=ProfileForm(request.POST)
if profile_form.is_valid():
profile=Profile_form.save()
book_form=BookForm(request.POST)
if book_form.is_valid():
book = book_form.save(commit=False)
book.profile = profile
book.save()
请参阅this paragraph中的说明,了解commit=False
部分
答案 1 :(得分:1)
def addinfo(request):
profile_form = ProfileForm()
book_form = BookForm(instance=Profile())
if request.POST:
profile_form=ProfileForm(request.POST)
if profile_form.is_valid():
profile=Profile_form.save()
book = Book(profile_id=profile.id)
book_form=BookForm(request.POST,instance=book)
if book_form.is_valid():
book_form.save()