python manage.py startapp polls创建一个叫polls的app

编辑文件 polls/models.py :

1	from django.db import models
2	class Poll(models.Model):
3	  question = models.CharField(max_length=200)
4	  pub_date = models.DateTimeField('date published')

再次编辑文件 settings.py ,修改设置INSTALLED_APPS包含字符串 'polls' 。修改后的配置如下:

INSTALLED_APPS = (
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.sites',
'polls'
)


现在Django知道要去包含 polls 这个应用了。

在 Django 中,有一个记录了项目中所有 model 元数据的表,就是 ContentType。表中一条记录便对应着一个存在的model ,那么我们只要通过一个元数据表的 id 和一个具体数据表中的 id,便可以找到任何model中的任何记录。该模块包含在django默认模块中

django1.9以后,使用migrate代替syscdb

运行python manage.py migrate来为数据库中每个应用建立一个数据库表。 

起初一直报错:

RuntimeError: Model class django.contrib.auth.models.Permission doesn't declare an explicit app_label and isn't in an application
in INSTALLED_APPS.

原来我把django的settings文件里的模块都注释掉了,而相应关联的位置没有更改,于是解除注释重新运行,过了

可以运行以下的命令来进行检查跟踪:

  • python manage.py validate -- 检查模型的结构错误。
  • python manage.py sqlcustom polls -- 输出所有为应用定义的自定义SQL语句 (例如表修改和约束)。
  • python manage.py sqlclear polls -- 根据已存在的表,输出这个应用中必要的DROP TABLE语句。
  • python manage.py sqlindexes polls -- 输出这个应用CREATE INDEX语句。
  • python manage.py sqlall polls -- sql,sqlcustom和sqlindexes命令产生的SQL语句的结合。

python manage.py migrate主要作用是生成相应的要使用的数据库,对应的models需要在settings里设置,如果有所更改,只需要用manage.py makemigrations命令来提交修改,然后运行python manage.py migrate就可以更新数据库。

更新完毕后,你就可以在数据库里看到表,如果看不到,可以用api方式校验,详见下篇