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怎么多表联合查询的主要内容,如果未能解决你的问题,请参考以下文章

mysql 多表联合查询语句怎么写

mysql 多表联合查询啥用

ACCESS数据库中如何实现多表联合查询?

怎样使数据库中的多表实现联合查询

.net通用CMS快速开发框架——问题:Dapper通用的多表联合分页查询怎么破?

ASP ACCESS 多表联合查询问题