0

私の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)

これは、データを2つの異なるモデルに保存するためのもので、このフォームを使用しています.1つのモデルが更新され、もう1つのテーブルデータが挿入されません。保存しないと、ページが更新されます。問題は何でしょうか。

4

2 に答える 2

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()

一部の説明については、この段落の注記を参照してください。commit=False

于 2013-03-26T10:13:13.987 に答える
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()
于 2013-03-26T10:34:36.100 に答える