1.django中支持一对一,多对多,多对一的关系定义。但一般是先得到一个表的对象,然后通过这个对象再得到其它表的对象,所以不是一次性查所相关表的所有字段。因为django是采用ORM的处理方式。如果要实现复杂的多表查询,要使用底层的cursor来处理。
2.ORM方式与简单的SQL的方式本来就不一样。ORM在处理单条记录时,以对象方式来操作很方便,但对于复杂的查询,多表组合就不方便了。我想这是出于使
用目的不同造成的。没有万能药。Sqlalchemy在这方面可能不错,它但其实是可以让你选择是使用ORM来是SQL方式,是一个集成。而Django
没有提供包装得比较好的SQL的方式。虽然它提供了extra子句,但可能还不是足够方便。
3.看来以后要SQL 加 ORM混合使用了,因为基本上一个稍大点的网站都是多表联合查询的
1.控制器通过从模型层提取出来数据然后开始渲染模板
from mysite.books.models import Book
def book_list(request):
books = Book.objects.order_by('name')
#实现了传统的SQL语句功能
return render_to_response('book_list.html', {'books': books})
数据存取逻辑、业务逻辑和表现逻辑组合在一起的概念有时被称为软件架构的
Model-View-Controller
(MVC)模式。在这个模式中, Model 代表数据存取层,View 代表的是系统中选择显示什么和怎么显示的部分,Controller
指的是系统中根据用户输入并视需要访问模型,以决定使用哪个视图的那部分。
模型层的:实现的功能方法是封装数据存取逻辑
控制器的:实现业务逻辑
表现逻辑:视图层
一个project包含很多个Django app以及对它们的配置。
技术上,project的作用是提供配置文件,比方说哪里定义数据库连接信息, 安装的app列表, TEMPLATE_DIRS ,等等。
一个app是一套Django功能的集合,通常包括模型和视图,按Python的包结构的方式存在。
例如,Django本身内建有一些app,例如注释系统和自动管理界面。
app的一个关键点是它们是很容易移植到其他project和被多个project重用。
如果你只是建造一个简单的web站点,那么可能你只需要一个app就可以了。如果是复杂的象电子商务之类的Web站点,你可能需要把这些功能划分成不同的app,以便以后重用。
模型安装
完成这些代码之后,现在让我们来在数据库中创建这些表。要完成该项工作,第一步是在 Django 项目中
激活 这些模型。将 books app 添加到配置文件的已 installed apps 列表中即可完成此步骤。
将相应的应用安装进来自然模型就会有了的!
阅读(614) | 评论(0) | 转发(0) |