Django怎么多表联合查询
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Django怎么多表联合查询相关的知识,希望对你有一定的参考价值。
参考技术A 先让我们回忆一下在第五章里的关于书本(book)的数据模型:1
from django.db import models
class Publisher(models.Model):
name = models.CharField(max_length=30)
address = models.CharField(max_length=50)
city = models.CharField(max_length=60)
state_province = models.CharField(max_length=30)
country = models.CharField(max_length=50)
website = models.URLField()
def __unicode__(self):
return self.name
class Author(models.Model):
first_name = models.CharField(max_length=30)
last_name = models.CharField(max_length=40)
email = models.EmailField()
def __unicode__(self):
return u'%s %s' % (self.first_name, self.last_name)
class Book(models.Model):
title = models.CharField(max_length=100)
authors = models.ManyToManyField(Author)
publisher = models.ForeignKey(Publisher)
publication_date = models.DateField()
def __unicode__(self):
return self.title
如我们在第5章的讲解,获取数据库对象的特定字段的值只需直接使用属性。 例如,要确定ID为50的书本的标题,我们这样做:
>>> from mysite.books.models import Book
>>> b = Book.objects.get(id=50)
>>> b.title
u'The Django Book'
但是,在之前有一件我们没提及到的是表现为ForeignKey 或 ManyToManyField的关联对象字段,它们的作用稍有不同。
访问外键(Foreign Key)值
当你获取一个ForeignKey 字段时,你会得到相关的数据模型对象。 例如:
>>> b = Book.objects.get(id=50)
>>> b.publisher
<Publisher: Apress Publishing>
>>> b.publisher.website本回答被提问者采纳
Django中多表查询思路
需求:
1、有一张文章表和一张评论表
2、两张表的关系是一对多
3、规则:若是有新评论,则将对应的文章置顶,若是有新文章则将新文章置顶。
思路:
在文章表中增加一个最后评论时间的字段。然后采用分组排序,即可解决
预留:
Django中除了有外键对应关系表外,如何将多张表联合查询?
以上是关于Django怎么多表联合查询的主要内容,如果未能解决你的问题,请参考以下文章