Django模型Model(实验楼学习笔记)

(1)配置数据库

Django的项目设置都包含在了mysite/mysite/settings.py中。

对于数据库,配置文件使用了SQLite作为默认的数据库文件。

如果你选择使用其它数据库,你需要安装相应数据库的绑定,然后改变设置文件中的DATABASE default

使用其他数据库参考文档:https://docs.djangoproject.com/zh-hans/2.0/ref/settings/#std:setting-DATABASES

配置设置文件中的TIME_ZONE为自己所在地的时区,中国地区为Asia/Shanghai

TIME_ZONE = 'Asia/Shanghai'

(2)创建模型

模型包含了存储的数据所必要的字段和行为。 

模型示例如下:

扫描二维码关注公众号,回复: 4541397 查看本文章

mysite/lib/models.py文件中写入如下代码:

# lib/models.py
from django.db import models

class Book(models.Model):
    name = models.CharField(max_length=200)
    author = models.CharField(max_length=100)
    pub_house = models.CharField(max_length=200)
    pub_date = models.DateTimeField('date published')

从代码可以看出,模型是django.db.models.Model类的子类。每个模型有一些类变量,它们都表示模型里的一个数据库字段。

每个字段都是Field类的实例。比如字符字段是CharField,日期字段被表示为DateTImeField。这将告诉Django每个字段要处理的数据类型。

定义某些Field类实例需要参数。如上面的max_length=100中的max_length。这个参数的用处不止于用来定义数据结构,也用于验证数据。

(3)激活模型

通过前面的代码,Django可以:

  • 为这个应用创建数据库schema(生成 CREATE TABLE语句)。
  • 创建可以与Book对象进行交互的Python数据库API。

 为了实现上述功能,我们首先要将lib应用安装到我们项目中。

因为LibConfig类写在文件lib/apps.py中,所以它的路径为lib.apps.LibConfig

在设置文件中添加路径:

# mysite/mysite/settings.py
INSTALLED_APPS = [
    'lib.apps.LibConfig',
    'django.contrib.admin',
    ...
]

现在你的Django项目会包含lib应用。 运行下面的命令:

$ python3 manage.py makemigrations lib

你会看到这样的输出:

4-2.3-1

通过运行 makemigrations 命令,Django 会检测你对模型文件的修改,并且把修改的部分储存为一次迁移

让我们看看迁移命令会执行哪些SQL语句。

$ python3 manage.py sqlmigrate lib 0001

可以看到创建的SQL语句

现在运行migrate命令,在数据库里创建新定义的模型的数据表:

$ python3 manage.py migrate 

看到如下画面,则表示成功! 4-2.3-3

(4)使用各种API:

$ python3 manage.py shell

使用这个命令而不是简单的使用 "Python" 是因为 manage.py 会设置 DJANGO_SETTINGS_MODULE 环境变量,这个变量会让 Django 根据 mysite/settings.py 文件来设置 Python 包的导入路径。

>>>from lib.models import Book
>>>Book.objects.all()   #获取Book所有对象
<QuerySet []>
>>>from django.utils import timezone
>>>b = Book(name='Business', author='Tom', pub_house='First Press', pub_date=timezone.now())    #创建
>>>b.save() #保存
>>>b.id
1
>>>b.name
'Business'
>>>b.pub_date
datetime.datetime(2018, 7, 4, 2, 29, 7, 578323, tzinfo=<UTC>)

本节实验代码的下载链接:

$ wget http://labfile.oss.aliyuncs.com/courses/1127/4.zip

猜你喜欢

转载自blog.csdn.net/qq_39112101/article/details/84871892
今日推荐