2013-03-06 63 views
4

models.py是Django的編輯和更新現有的數據在數據庫

from django.db import models 

    class Book(models.Model): 

     book_id=models.AutoField(primary_key=True,unique=True) 
     book_name=models.CharField(max_length=30) 
     author_name=models.CharField(max_length=30) 
     publisher_name=models.CharField(max_length=40) 

     class Meta: 
      db_table = u'Book' 

     def __unicode__(self): 
      return "%d %s %s %s" % (self.book_id,self.book_name, self.author_name,self.publisher_name) 

forms.py是

from django import forms 
from django.forms import ModelForm 
from myapp.models import Book 


class BookForm(ModelForm): 

    class Meta: 
     model = Book 

     fields=['book_id','book_name','author_name','publisher_name'] 

我views.py是

def editbook(request,book_id): 

    queryset = Book.objects.filter(book_id=book_id) 
    if request.POST: 
     form=BookForm(request.POST,instance=queryset) 
     if form.is_valid(): 
      form.save() 
      return redirect('index') 
    else: 
     form=BookForm(instance=queryset) 
     template = 'editbook.html' 
     book = { 'form':form } 
    return render_to_response(template, book , RequestContext(request)) 

我需要編輯和更新數據庫中已有的數據行。我猜他們是views.py中的一些問題。因此我不確定我的views.py是否爲write.Please check and te如果有任何問題以及如何繼續,請告訴我。

感謝

回答

6

views.py

if request.POST: 
     book_form = BookForm(request.POST) 

    if book_form.is_valid(): 

     book = Book.objects.get(pk=book_id) 
      book_form = BookForm(request.POST, instance = book) 
      book_form.save() 
      return redirect('/index/') 
    else: 
     book = Book.objects.get(pk = book_id)  
     book_form = BookForm(instance=book) 

     return render_to_response('editbook.html',{ 'form':book_form }, context_instance=RequestContext(request)) 
相關問題