Django 的 model 处理,它是一种 ORM (Object Relation Mapping, 对象与关系的映射)

痛定思痛。 2022-07-15 07:41 228阅读 0赞

3 **编辑wiki/models.py**

fromdjango.db import models

# Createyour models here.

classWiki(models.Model):

  1. pagename = models.CharField(max\_length=20, unique=True)
  2. content = models.TextField()

每个 model 其实在 Django 中就是一个表,你将用它来保存数据。在实际的应用中,一般都要与数据库打交道,如果不想用数据库,那么原因可能就是操作数据库麻烦,创建数据库环境也麻烦。但通过 Django 的 model 处理,它是一种 ORM (Object Relation Mapping, 对象与关系的映射),可以屏蔽掉底层数据库的细节,同时提供以对象的形式来处理数据。非常方便。而且 Django 的 model 层支持多种数据库,如果你改变数据库不是问题,这也为以后的数据库迁移带来好处。

Wiki 是 model 的名字,它需要从 models.Model 派生而来。它定义了两个字段,一个是字段是 pagename ,用来保存 wiki 页面的名字,它有两个参数,一个是最大长度(从这点上不如SQLAlchemy方便, SQLAlchemy并不需要长度,它会根据有无长度自动转为TEXT 类型),目前 CharField需要这个参数;另一个是 unique 表示这个字段不能有重复值。还有一个字段是 content ,用来保存 wiki 页面的内容,它是一个 TextField 类型,它不需要最大长度。

在运行时, Django 会自动地为这个 model 增加许多数据操作的方法。关于 model 和 数据库操作API的详细内容参见 Model reference和 Database API reference的文档。

4 **修改settings.py, 安装 app**

虽然我们的其它工作没有做完,但我还是想先安装一下 app 吧。每个 app 都需要安装一下。安装一般有两步:

  1. 修改settings.py

INSTALLED_APPS= (

  1. 'django.contrib.auth',
  2. 'django.contrib.contenttypes',
  3. 'django.contrib.sessions',
  4. 'django.contrib.sites',
  5. 'newtest.wiki',

)

  1. 执行(在newtest目录下)

manage.pysyncdb

以前是使用 install wiki 。现在也可以使用,不过使用 syncdb 要更简单得多。如果没有报错就是成功了。这一步 Django 将根据 model 的信息在数据库中创建相应的表。

5 **在命令行下加入首页(FrontPage)**

我们假设首页的名字为 FrontPage ,并且我们将在命令行下增加它,让我们熟悉一下命令行的使用,进入 newtest目录,然后:

manage.pyshell

进入 python

from newtest.wiki.models import Wiki

page = Wiki(pagename=’FrontPage’, content=’Welcome to Easy Wiki’)

page.save()

Wiki.objects.all()

[]

p = Wiki.objects.all()[0]

p.pagename

‘FrontPage’

p.content

‘Welcome toEasy Wiki’

因为在写这篇教程时是在magic-removal分枝下进行的操作,因此有些 API 并不稳定。象 objects 的方法以前是沿用model的方法,但后来进行了简化,比如 get_list() 变为 all() 。还有一系统的变化。具体的可参见 Removing The Magic文档中关于Descriptor fields 的说明。

在 Django 中,对于数据库的记录有两种操纵方式,一种是集合方式,一种是对象方式。集合方式相当于表级操作,在0.92 中可以使用 model.objects 来处理。objects对象有一些集合方式的操作,如 all() 会返回全部记录,filter() 会根据条件返回部分记录。而象插入新记录则需要使用记录方式来操作。

发表评论

表情:
评论列表 (有 0 条评论,228人围观)

还没有评论,来说两句吧...

相关阅读

    相关 DjangomodelsORM

    到目前为止,当我们的程序涉及到数据库相关操作时,我们一般都会这么搞: 创建数据库,设计表结构和字段 使用 MySQLdb 来连接数据库,并编写数据访问层代码

    相关 ORM(对象关系映射)

    一、作用 用于实现面向对象编程语言里不同类型系统的数据之间的转换,换言之,就是用面向对象的方式去操作数据库的创建表以及增删改查等操作 二、优缺点 优点: 1.OR