0

models.py

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)

データベースからのデータを表示するために、このモデルの forms.py と views.py の書き方を教えてください。

私のforms.pyは

class AuthorForm(forms.ModelForm):

    class Meta:
        model = Author
        fields = ['author_id','first_name','last_name','email','age']

class BookForm(forms.ModelForm):

    class Meta:
        model = Book
        fields=['book_id','book_name','publisher_name','author_id']

だから私はこのようにforms.pyを書いた.それはモデルフィールドのために書かれている.だから私が与えたフォームが正しいことを教えてください.データベースから 2 つのテーブルから。

私のviews.pyは

def index(request): 
    book = forms.ModelMultipleChoiceField(queryset=Book.objects.all())
    return render_to_response('index.html', locals(),context_instance=RequestContext(request))

データベースのすべてのデータを表示できません。これを手伝ってください。views.py コンテンツに問題がある場合は、views.py の書き方を教えてください。

私のindex.htmlは

<html>
<head>
<title>
</title>
</head>
<body>   
<div align="center">
<table border="0" cellpadding='8' cellspacing='10'>
    <tr>
        <td align="right" colspan="10"><a href="/addbook/">Add Book</a></td>
    </tr>
    <tr>
        <th>Book Id</>
    <th>Book name</th>
    <th>Publication name</th>
    <th>Author Id</th>
    <th>First Name</th>
    <th>Last Name</th>
    <th>E Mail</th>
    <th>Age</th>
        <th></th>
        <th></th>
    </tr>
    {% for book in books %}
    <tr>
       <td>{{ book.book_id }}</td>
       <td>{{ book.book_name }}</td>
       <td>{{ book.publisher_name }}</td>
       <td>{{ book.author_id }}</td>    
       <td>{{ book.author.first_name }}</td>
       <td>{{ book.author.last_name }}</td>
       <td>{{ book.author.email }}</td>
       <td>{{ book.author.age }}</td>
       <td><a href="/editbook/{{ book.book_id}}">Edit</a></td>
       <td><a href="/deletebook/{{ book.book_id}}">Delete</a></td>
    {% endfor %}
</table>
</div>
</body>
</html>

ありがとう、

4

2 に答える 2

1

あなたのモデルとフォームは手元で正しく見えます。それらを接続するためのビューの作成については、Djangoチュートリアルのパート4を参照してください。

于 2013-03-06T04:44:27.163 に答える
1

あなたのviews.pyでこれを試してください:

from models import Book
from django.shortcuts import render_to_response
from django.template import RequestContext

def index(request): 
   books = Book.objects.all()
   return render_to_response('index.html', 
       locals(),
       context_instance=RequestContext(request))
于 2013-03-06T06:24:16.160 に答える