1.创建数据库表
现在我们可以创建数据库表了。 首先,用下面的命令验证模型的有效性:
python manage.py validate
validate 命令检查你的模型的语法和逻辑是否正确。 如果一切正常,你会看到 0 errors found 消息。如果出错,请检查你输入的模型代码。 错误输出会给出非常有用的错误信息来帮助你修正你的模型。
一旦你觉得你的模型可能有问题,运行 python manage.py validate 。 它可以帮助你捕获一些常见的模型定义错误。
模型确认没问题了,运行下面的命令来生成 CREATE TABLE 语句(如果你使用的是Unix,那么可以启用语法高亮):
python manage.py sqlall books
注意:
自动生成的表名是app名称( books )和模型的小写名称 ( publisher , book , author )的组合。你可以参考附录B重写这个规则。
我们前面已经提到,Django为每个表格自动添加加了一个 id 主键, 你可以重新设置它。
按约定,Django添加 "_id" 后缀到外键字段名。 你猜对了,这个同样是可以自定义的。
外键是用 REFERENCES 语句明确定义的。
这些 CREATE TABLE 语句会根据你的数据库而作调整,这样象数据库特定的一些字段例如:(MySQL),auto_increment(PostgreSQL),serial(SQLite),都会自动生成。integer primary key 同样的,字段名称也是自动处理(例如单引号还好是双引号)。 例子中的输出是基于PostgreSQL语法的。
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并不会做出任何处理。