现在,打开mysite/settings.py。这是一个普通的Python模块,具有表示Django设置的模块级变量。
默认情况下,配置使用SQLite。如果您不熟悉数据库,或者只是对尝试使用Django感兴趣,这是最简单的选择。SQLite包含在Python中,因此您不需要安装其他任何东西即可支持数据库。但是,在开始第一个实际项目时,您可能希望使用可扩展性更高的数据库(例如PostgreSQL),以避免数据库切换麻烦。
如果要使用另一个数据库,请安装适当的数据库绑定并在项目中更改以下键 以匹配您的数据库连接设置:DATABASES ‘default‘
ENGINE-要么 ‘django.db.backends.sqlite3‘, ‘django.db.backends.postgresql‘, ‘django.db.backends.mysql‘,或 ‘django.db.backends.oracle‘。也可以使用其他后端。NAME–数据库的名称。如果您使用的是SQLite,则数据库将是您计算机上的文件;在这种情况下,NAME 应为该文件的完整绝对路径,包括文件名。默认值会将文件存储在您的项目目录中。os.path.join(BASE_DIR, ‘db.sqlite3‘)如果你不使用SQLite作为数据库,如其他设置 USER,PASSWORD以及HOST必须增加。
在编辑时mysite/settings.py,将其设置TIME_ZONE为您的时区。
另外,请注意INSTALLED_APPS文件顶部的设置。该名称包含在此Django实例中激活的所有Django应用程序的名称。应用程序可以在多个项目中使用,您可以打包和分发这些应用程序,以供其他人在其项目中使用。
默认情况下,INSTALLED_APPS包含以下应用程序,所有这些应用程序都随Django一起提供:
django.contrib.admin–管理站点。您将很快使用它。django.contrib.auth –认证系统。django.contrib.contenttypes –内容类型的框架。django.contrib.sessions –会话框架。django.contrib.messages –消息传递框架。django.contrib.staticfiles –用于管理静态文件的框架。默认情况下,这些应用程序是为方便起见而包含的。
现在,我们将定义您的模型-本质上是您的数据库布局以及其他元数据。
在我们的民意调查应用中,我们将创建两个模型:Question和Choice。
一个 Question有一个问题和出版日期。A Choice有两个字段:选择的文本和一个投票计数。每个Choice都与关联Question。
这些概念由Python类表示。编辑 polls/models.py文件,使其如下所示:

注意使用定义了一个关系 ForeignKey。这告诉Django每个Choice都与一个相关Question。Django支持所有常见的数据库关系:多对一,多对多和一对一。
少量的模型代码为Django提供了很多信息。有了它,Django能够:
CREATE TABLEQuestion和Choice对象的Python数据库访问API 。但是首先我们需要告诉我们的项目该polls应用程序已安装。
要将应用程序包含在我们的项目中,我们需要在设置中添加对其配置类的引用INSTALLED_APPS。
该 PollsConfig班是在polls/apps.py文件中,所以它的虚线路径‘polls.apps.PollsConfig‘。
编辑mysite/settings.py文件,并将该虚线路径添加到INSTALLED_APPS设置中。它看起来像这样:

现在Django知道会包含该polls应用程序。让我们运行另一个命令:
python manage.py makemigrations polls
执行的时候应该会报错,只需要安装 “pip install mysqlclient” 即可解决,如果已经安装可以uninstall之后,在install
您应该看到类似于以下内容:

然后取数据库查看对应的表polls_choice 和 polls_question。

迁移是Django存储对模型(以及数据库模式)所做更改的方式-它们是磁盘上的文件。如果愿意,您可以阅读新模型的迁移;这是文件polls/migrations/0001_initial.py。不用担心,您不会期望每次Django都读入它们,但是如果您想手动调整Django的更改方式,则可以对它们进行人工编辑。
有一个命令将为您运行迁移并自动管理您的数据库模式-称为migrate,稍后我们将介绍它-但首先让我们看看将运行哪种SQL。该 sqlmigrate命令采用迁移名称并返回其SQL:
$ python manage.py sqlmigrate polls 0001
您应该看到类似以下内容的内容(为了便于阅读,我们对其进行了重新格式化):

请注意以下几点:
polls)与模型的小写名称– question和组合而成的 choice。(您可以覆盖此行为。)"_id"到外键字段名称。(是的,您也可以覆盖它。)FOREIGN KEYDEFERRABLEauto_increment(MySQL),serial(PostgreSQL)或(SQLite)。字段名称的引用也是如此–例如,使用双引号或单引号。integer primary key autoincrementsqlmigrate命令实际上并未在数据库上运行迁移-而是将其打印到屏幕上,以便您可以查看Django认为需要的SQL。这对于检查Django将要执行的操作或是否有需要SQL脚本进行更改的数据库管理员很有用。如果您有兴趣,也可以运行 ;这样可以检查项目中是否存在任何问题,而无需进行迁移或接触数据库。
现在,migrate再次运行以在数据库中创建那些模型表:
python manage.py migrate

该migrate命令获取所有尚未应用的迁移(Django使用名为的特殊表在数据库中跟踪应用了哪些迁移django_migrations),并针对您的数据库运行它们-本质上,将您对模型所做的更改与数据库。
迁移功能非常强大,可以在开发项目时随时间更改模型,而无需删除数据库或表并创建新的模型-它专门用于实时升级数据库而不会丢失数据。我们将在本教程的后面部分中更深入地介绍它们,但是现在,请记住进行模型更改的三步指南:
models.py)。python manage.py makemigrationspython manage.py migrate之所以使用单独的命令来进行和应用迁移,是因为您会将迁移提交到版本控制系统,并随应用程序一起交付;它们不仅使您的开发更加容易,而且还可以被其他开发人员和生产环境使用。
现在,让我们跳入交互式Python外壳并尝试使用Django提供的免费API。要调用Python Shell,请使用以下命令:
$ python manage.py shell
我们使用它而不是简单地输入“ python”,因为它manage.py 设置了DJANGO_SETTINGS_MODULE环境变量,该变量为Django提供了到mysite/settings.py文件的Python导入路径。
进入Shell后,探索数据库API:


向模型中添加方法

保存这些更改,然后再次运行以启动新的Python交互式shell :python manage.py shell


原文:https://www.cnblogs.com/leon-joker/p/12861128.html