• 创建我们第一个Django模型

    创建模型的步骤
    服务器君一共花费 9.501 ms 进行了 2 次数据库查询,努力地为您提供了这个页面。
    广告很萌的

    我们试下写一个CMS的模型。

    设计模型

    第一步是用Python代码来描述它们。 打开由“startapp"命令创建的models.py 并输入下面的内容:

    from django.db import models
    
    # Create your models here.
    class Chikas(models.Model):
        title = models.CharField(max_length=50)
        sn = models.CharField(max_length=12)
        content = models.CharField(max_length=255)
        tag = models.CharField(max_length=30)
        date = models.CharField(max_length=20)
        state = models.URLField()
    

    让我们来快速讲解一下这些代码的含义。

    首先要注意的事是每个数据模型都是 django.db.models.Model 的子类。它的父类 Model 包含了所有必要的和数据库交互的方法,并提供了一个简洁漂亮的定义数据库字段的语法。 这些就是我们需要编写的通过Django存取基本数据的所有代码。

    每个模型相当于单个数据库表,每个属性也是这个表中的一个字段。 属性名就是字段名,它的类型(例如 CharField )相当于数据库的字段类型 (例如 varchar )。

    安装模型

    完成这些代码之后,现在让我们来在数据库中创建这些表。 要完成该项工作,第一步是在 Django 项目中 激活 这些模型。 将 books app 添加到配置文件的已安装应用列表中即可完成此步骤。

    再次编辑 settings.py 文件, 找到 INSTALLED_APPS 设置。 INSTALLED_APPS 告诉 Django 项目哪些 app 处于激活状态。

    INSTALLED_APPS = (
        'django.contrib.auth',
        'django.contrib.contenttypes',
        'django.contrib.sessions',
        'django.contrib.sites',
        'django.contrib.messages',
        'django.contrib.staticfiles',
        # Uncomment the next line to enable the admin:
        'django.contrib.admin',
        # Uncomment the next line to enable admin documentation:
        # 'django.contrib.admindocs',
        'PythonProject.chikas',
    )
    

    注意 PythonProject.chikas 的意思是 PythonProject 这个project 下的 chikas 模型。

    创建数据表

    现在我们可以创建数据库表了。 首先,用下面的命令验证模型的有效性:

    python manage.py validate
    

    validate 命令检查你的模型的语法和逻辑是否正确。 如果一切正常,你会看到 0 errors found 消息。如果出错,请检查你输入的模型代码。 错误输出会给出非常有用的错误信息来帮助你修正你的模型。

    一旦你觉得你的模型可能有问题,运行 python manage.py validate 。 它可以帮助你捕获一些常见的模型定义错误。

    模型确认没问题了,运行下面的命令来生成 CREATE TABLE 语句:

    python manage.py sqlall chikas
    

    生成的 SQL 如下:

    E:\PythonProject>python manage.py sqlall chikas
    BEGIN;
    CREATE TABLE `chikas_chikas` (
        `id` integer AUTO_INCREMENT NOT NULL PRIMARY KEY,
        `title` varchar(50) NOT NULL,
        `sn` varchar(12) NOT NULL,
        `content` varchar(255) NOT NULL,
        `tag` varchar(30) NOT NULL,
        `date` varchar(20) NOT NULL,
        `state` varchar(200) NOT NULL
    )
    ;
    
    COMMIT;
    
    • 自动生成的表名是app名称(chikas)和模型的小写名称 ( chikas )的组合。这里名字是一样的。也可以重写这个规则,后面后介绍到。
    • Django为每个表格自动添加加了一个 id 主键, 你可以重新设置它。
    • 按约定,Django添加 "_id" 后缀到外键字段名。这个同样是可以自定义的。
    • 外键是用 REFERENCES 语句明确定义的。
    • 这些 CREATE TABLE 语句会根据你的数据库而作调整,这样象数据库特定的一些字段例如:(MySQL),auto_increment(PostgreSQL),serial(SQLite),都会自动生成。integer primary key 同样的,字段名称也是自动处理(例如单引号还好是双引号)。 

    sqlall 命令并没有在数据库中真正创建数据表,只是把SQL语句段打印出来,这样你可以看到Django究竟会做些什么。 如果你想这么做的话,你可以把那些SQL语句复制到你的数据库客户端执行,或者通过Unix管道直接进行操作(例如,“python manager.py sqlall books | psql mydb”)。不过,Django提供了一种更为简易的提交SQL语句至数据库的方法:“syncdb”命令

    python manage.py syncdb
    

    syncdb 命令是同步你的模型到数据库的一个简单方法。 它会根据 INSTALLED_APPS 里设置的app来检查数据库, 如果表不存在,它就会创建它。 需要注意的是, syncdb 并 不能将模型的修改或删除同步到数据库;如果你修改或删除了一个模型,并想把它提交到数据库,syncdb并不会做出任何处理。

    • 如果你再次运行 python manage.py syncdb ,什么也没发生,因为你没有添加新的模型或者 添加新的app。因此,运行python manage.py syncdb总是安全的,因为它不会重复执行SQL语句。

    如果你有兴趣,花点时间用你的SQL客户端登录进数据库服务器看看刚才Django创建的数据表。 你可以手动启动命令行客户端,也可以执行“python manage.py dbshell”,这个命令将依据“DATABASE_SERVER”的里设置自动检测使用哪种命令行客户端。常言说,后来者居上。

    至此,我们的第一个模型创建完毕。

更多 推荐条目

Welcome to NowaMagic Academy!

现代魔法 推荐于 2013-02-27 10:23   

本章最新发布
随机专题
  1. [移动开发] Android布局基本知识 3 个条目
  2. [移动开发] Android加载器Loaders 5 个条目
  3. [软件工程与项目管理] 呈现树的构建 13 个条目
  4. [Python程序设计] Django 入门知识浅介 10 个条目
  5. [移动开发] Android View注入框架Butter Knife 3 个条目
  6. [PHP程序设计] 声明式编程范式 12 个条目
  7. [智力开发与知识管理] 整体性学习步骤 9 个条目
  8. [Python程序设计] 标准库:urllib/urllib2 14 个条目
  9. [PHP程序设计] Nginx基本操作释疑 7 个条目
  10. [Linux操作系统] CentOS上使用EPEL Repository 2 个条目
  11. [智力开发与知识管理] 信息的类型与结构 9 个条目
  12. [移动开发] Android Studio里的Gradle 3 个条目
窗口 -- [协会]