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

334 篇文章 1 订阅
99 篇文章 0 订阅

3   编辑wiki/models.py

fromdjango.db import models

# Createyour models here.

classWiki(models.Model):

    pagename = models.CharField(max_length=20, unique=True)

    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= (

    'django.contrib.auth',

    'django.contrib.contenttypes',

    'django.contrib.sessions',

    'django.contrib.sites',

    '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()

[<Wikiobject>]

>>>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
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值