Django models 使用django编辑和更新数据库中的行

Django models 使用django编辑和更新数据库中的行,django-models,django-forms,django-views,Django Models,Django Forms,Django Views,models.py class Author(models.Model): first_name = models.CharField(max_length=30) last_name = models.CharField(max_length=40) email = models.EmailField() age = models.IntegerField() def __unicode__(self): return "{0} {1}

models.py

class Author(models.Model):
    first_name = models.CharField(max_length=30)
    last_name = models.CharField(max_length=40)
    email = models.EmailField()
    age = models.IntegerField()

    def __unicode__(self):
        return "{0} {1} {2} {3} {4}".format(
            self, self.first_name, self.last_name, self.email, self.age)

class Book(models.Model):
    book_name=models.CharField(max_length=30)
    publisher_name=models.CharField(max_length=40)
    author=models.ForeignKey(Author)

    def __unicode__(self):
        return "{0} {1} {2}".format(
            self.pk, self.book_name, self.publisher_name)
forms.py

class AuthorForm(ModelForm):
    class Meta:
        model = Author     

BookFormset = inlineformset_factory(Author, Book, 
    fields=('book_name', 'publisher_name'), extra=1, 
    can_delete=False) 
url.py是

admin.autodiscover()

urlpatterns = patterns('',
    url('^$', index),
    url('^index/$', index),
    url('^addbook/$', addbook),
    url('^book_detail/$', book_detail, 'book_summary'),
    url('^editbook/(?P<book_id>\d+)/$', editbook) ,
    url('^deletebook/(?P<book_id>\d+)/$',deletebook) ,


    url(r'^admin/', include(admin.site.urls)),


)
admin.autodiscover()
urlpatterns=模式(“”,
url(“^$”,索引),
url(“^index/$”,索引),
url(“^addbook/$”,addbook),
url(“^book\u detail/$”、book\u detail、“book\u summary”),
url(“^editbook/(?P\d+/$”,editbook),
url(“^deletebook/(?P\d+/$”,deletebook),
url(r“^admin/”,包括(admin.site.url)),
)
我需要执行编辑和更新数据库中的行,我是通过使用单个表来完成的。但是使用两个表时会有一些混淆,即如何使用该特定id获取第二个表。我在此使用表单。您能帮助我在views.py中编写代码吗。我没有看到使用两个表进行相同操作的示例

感谢

def更新手册(请求,手册id):
def update_book(request, book_id):
    author = get_object_or_404(Author, pk=author_id)

    form = AuthorForm(instance=author)
    book_formset = BookFormset(instance=author)

    if request.method == 'POST':
        form = AuthorForm(request.POST, instance=author)
        if form.is_valid():
            author = form.save(commit=False)
            book_formset = BookFormset(request.POST, instance=author)
            if book_formset.is_valid():
                author.save()
                book_formset.save()
                return redirect('/index/')

    return render_to_response('updatebook.html',{
        'form': form, 'formset': book_formset
    },context_instance=RequestContext(request)) 


<div align="center">
    <tr>
        <form method="POST"> 
            {% csrf_token %} 
            <h5>Author:</h5>
            {{ form.as_p }}

            <h5>Book:</h5>
            {{ formset.as_p }}
            <input type="submit" value="submit">
        </form>
    </tr>
</div>
author=get\u object\u或\u 404(author,pk=author\u id) form=AuthorForm(实例=author) book_formset=BookFormset(实例=作者) 如果request.method==“POST”: form=AuthorForm(request.POST,instance=author) 如果form.is_有效(): author=form.save(commit=False) book_formset=BookFormset(request.POST,instance=author) 如果book\u formset.is\u valid(): author.save() book_formset.save() 返回重定向(“/index/”) 返回render\u to\u响应('updatebook.html'{ “表单”:表单,“表单集”:书本\u表单集 },context_instance=RequestContext(请求)) {%csrf_令牌%} 作者: {{form.as_p}} 书: {{formset.as_p}}
任何人都可以检查并告诉我一个小小的疑问,在author表中,没有author\u id字段,但在提到的代码中,author=get\u object\u或\u 404(author,pk=author\u id)author\u id不是一个字段,而是您需要在更新中传递的变量。因此,对象将知道哪些数据必须更新您的更新url还能够在该视图中传递id答案是正确的,但当我单击提交按钮时,它给出了“未找到页面”错误,对此有任何提示还记得id吗?你的url需要一个id,别忘了。