在Django中从两个具有外键关系的表中检索数据?

时间:2013-03-02 10:10:06

标签: python mysql django

  This is my models.py file 


 from django.db import models

   class Author(models.Model):
        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 Info'

        def __unicode__(self):
            return u"%d %s %s %s" % (self.pk, self.name, self.author.name, self.publisher_name)

        def books(self):
            return Book.objects.filter(author=self)

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

        class Meta:
            db_table = u'Book Name'

        def __unicode__(self):
            return u'%d %s %s' % (self.pk, self.first_name, self.last_name)

我想在django中显示2个表中的数据。请指导我如何编写views.py和templates.i我在作者表中使用外键

1 个答案:

答案 0 :(得分:1)

以下视图和html用于显示所有具有相应作者详细信息的书籍。

views.py

def client_add(request):
   books = Book.objects.all()
   return render_to_response('book_details.html', locals(),    context_instance=RequestContext(request))

book_details.html

<body>
{% for book in books %}
{{book.book_name}}
{{book.publisher_name}}
{{book.author.first_name}}
{{book.author.last_name}}
{{book.author.email}}
{{book.author.age}}
{% endif %}
</body>

以下视图和html用于特定作者相关详细信息的显示书籍。

views.py

def client_add(request):
   books = Book.objects.all(author_last_name ="author_last_name")
   return render_to_response('book_details.html', locals(),    context_instance=RequestContext(request))

book_details.html

<body>
{% for book in books %}
{{book.book_name}}
{{book.publisher_name}}
{{book.author.first_name}}
{{book.author.last_name}}
{{book.author.email}}
{{book.author.age}}
{% endif %}
</body>