Django学习第三部分(从创建模型到启用)

数据库的设置

设立数据库并创建初版模型。

由于这是一个测试应用程序,我们将使用SQLite3。

以下将保持默认状态:数据库、时区、安装应用程序。


DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.sqlite3',
        'NAME': BASE_DIR / 'db.sqlite3',
    }
}



TIME_ZONE = 'UTC'



INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
]

这些应用程序需要至少一个数据库表,因此在开始使用之前需要在数据库中创建表格。

确认设置后,返回一个目录并创建所需的数据库表。

$ python manage.py migrate

Running migrations:
  Applying contenttypes.0001_initial... OK
  Applying auth.0001_initial... OK
  Applying admin.0001_initial... OK
  Applying admin.0002_logentry_remove_auto_add... OK
  Applying admin.0003_logentry_add_action_flag_choices... OK
  Applying contenttypes.0002_remove_content_type_name... OK
  Applying auth.0002_alter_permission_name_max_length... OK
  Applying auth.0003_alter_user_email_max_length... OK
  Applying auth.0004_alter_user_username_opts... OK
  Applying auth.0005_alter_user_last_login_null... OK
  Applying auth.0006_require_contenttypes_0002... OK
  Applying auth.0007_alter_validators_add_error_messages... OK
  Applying auth.0008_alter_user_username_max_length... OK
  Applying auth.0009_alter_user_last_name_max_length... OK
  Applying auth.0010_alter_group_name_max_length... OK
  Applying auth.0011_update_proxy_permissions... OK
  Applying auth.0012_alter_user_first_name_max_length... OK
  Applying sessions.0001_initial... OK

确认迁移工作已成功完成。

创建模型

接下来,我们将定义一个模型。

模型是指数据库的布局以及相关的元数据。

在即将开发的简单投票应用程序中,我们将创建两个模型,分别是“问题”和“选择”。

我們將編輯polls/models.py如下所示。


from django.db import models

# Create your models here.
class Question(models.Model):
	question_text = models.CharField(max_length=200)
	pub_date = models.DateTimeField("date published")

class Choice(models.Model):
	question = models.ForeignKey(Question, on_delete=models.CASCADE)
	choice_text = models.CharField(max_length=200)
	votes = models.IntegerField(default=0)

启用模型

只需要按照上述提到的一小段代码,就可以创建应用程序的数据库模式(CREATE TABLE语句)。
此外,还可以创建用于从Python访问Question和Choice对象的数据库API。

但是,在此之前,您需要告诉项目中安装了Polls应用程序。

要将应用程序包含在项目中, 需要将配置类的引用添加到INSTALLED_APPS设置中。

编辑 mysite/settings.py 文件,
在 INSTALLED_APPS 设置中添加一行对 polls/apps.py 中的 PollsConfig 的路径。
(别忘了在末尾加上逗号)
这样就会变成以下这样。


# Application definition

INSTALLED_APPS = [
    'polls.apps.PollsConfig',
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
]

这样一来,Django 就能够识别 polls 应用程序的存在了。

我已经准备好了进行迁移了。

首先,执行makemigrations命令。这个命令可以在Django中保存模型的更改或创建新的模型时以迁移的形式存储。

$ python manage.py makemigrations polls

成功后将显示以下内容

Migrations for 'polls':
  polls\migrations\0001_initial.py
    - Create model Question
    - Create model Choice

执行迁移命令,在数据库中创建模型的表格。

$ python manage.py migrate

Operations to perform:
  Apply all migrations: admin, auth, contenttypes, polls, sessions
Running migrations:
  Applying polls.0001_initial... OK

这样一来,迁移就完成了。

使用Django的迁移功能时,
在更改模型时
无需删除并重新创建表。

可以直接升级模型,而不需要改变现有的数据。

广告
将在 10 秒后关闭
bannerAds