使用Django开发数据库应用的最大一个好处在于,使用Django的models可以方便的操纵数据库。models就相当于一个沟通应用与数据库的桥梁,Django会自动将与models相关的内容转化成SQL语句,更新到数据库中。使用Django,开发人员只需要将全部精力放在编写Python程序上即可。

下面,为film应用创建数据表:
1、打开film目录下面的models.py文件
2、书写film应用使用到的数据类
from  django.db  import  models

#  演员
class  Actor(models.Model):
    first_name 
=  models.CharField(max_length = 30 )
    last_name 
=  models.CharField(max_length = 30 )
    birthday 
=  models.DateField()

#  发行商
class  Publisher(models.Model):
    name 
=  models.CharField(max_length = 30 )

#  影片
class  Film(models.Model):
    title 
=  models.CharField(max_length = 100 )
    actors 
=  models.ManyToManyField(Actor)
    pub_date 
=  models.DateField()
    publisher 
=  models.ForeignKey(Publisher)
这里没有提供主键,因为Django会为每个class都自动生成一个名为id的主键。整型,自增。
class下的每一项都应该是一个field对象,Django的完整域列表可参考: http://docs.djangoproject.com/en/dev/ref/models/fields/,Django的models相关信息可参考: http://docs.djangoproject.com/en/dev/topics/db/models/,这里,只是简单的示例models的用法。
3、更新数据库
D:\mycode\mysite > python manage.py syncdb
发现报错
SyntaxError: Non - ASCII character  ' \xe6 '   in  file D:\mycode\mysite\..\mysite\film\models.py on line  3 , but no encoding declared; see http: // www.python.org / peps / pep - 0263 .html  for  details
因为源码models.py中用到了中文(虽然是注释。。。),但没有指明编码。
在models.py中加上:
# coding=utf8
重新执行syncdb命令,发现除了我们的film的表之外,还增加了好多额外的信息:
D:\mycode\mysite > python manage.py syncdb
Creating table auth_permission
Creating table auth_group
Creating table auth_user
Creating table auth_message
Creating table django_content_type
Creating table django_session
Creating table django_site
Creating table film_actor
Creating table film_publisher
Creating table film_film

You just installed Django
' s auth system, which means you don ' t have any superuse
rs defined.
Would you like to create one now? (yes
/ no):

这是因为这是第一次执行syncdb命令,除了film之外,settings.py中的INSTALLED_APPS列表中有许多默认应用,第一次执行数据库同步时会生成它们,输入yes,创建admin应用的账号信息。admin是一个系统自动生成的有用的管理工具。包括了大部分常见的后台管理功能,非常实用。

如果没错的话,数据表就建好了。可以到MySQL下验证:

mysql >   use  film;
Database  changed
mysql
>  show tables;
+ -- --------------------------+
|  Tables_in_film              |
+ -- --------------------------+
|  auth_group                  |
|  auth_group_permissions      |
|  auth_message                |
|  auth_permission             |
|  auth_user                   |
|  auth_user_groups            |
|  auth_user_user_permissions  |
|  django_content_type         |
|  django_session              |
|  django_site                 |
|  film_actor                  |
|  film_film                   |
|  film_film_actors            |
|  film_publisher              |
+ -- --------------------------+
14  rows  in   set  ( 0.00  sec)

mysql
>
可以看到,数据库表创建成功!