django orm - 模型

2020-03-05  本文已影响0人  eeert2

django 模型是数据库中的映射,也叫对象关系映射(Object Relational Mapping,简称ORM)。

一、创建模型


example 1. 创建模型示例

from django.db import models

class Person(models.Model):
    first_name = models.CharField(max_length=30)
    last_name = models.CharField(max_length=30)

first_namelast_name 是模型的 字段。每个字段都被指定为一个类属性,并且每个属性映射为一个数据库列。

说明:

二、使用模型

当我们创建完模型后,直接在数据库中是查找不到对应的表的,还需要进行一定的配置和操作。

1. 配置数据库

在项目的配置文件settings.py中,具有以下设置:

# settings.py
DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.sqlite3',
        'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
    }
}

这个是django的默认配置,使用sqlite3数据库,除此之外我们还可以使用mysqloracle等数据库,这里使用默认配置。

2. 设置INSTALLED_APPS

在我们的项目中可能包含很多的app,如果我们要使用app的模型model,则需要将app添加进settings.pyINSTALLED_APPS

# settings.py
INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'my_app', # 新添加的 `app` 名称
]

3. 使用python manage.py makemigrations生成迁移文件

注意:如果有以下提示,说明你执行命令所在路径不对,应该进入项目目录下,与manage.py同一级

 can't open file 'manage.py': [Errno 2] No such file or directory

正确执行该命令,则有以下提示:

Migrations for 'my_app':
  my_app/migrations/0001_initial.py
    - Create model Person

该命令在my_appmigrations目录下生成了0001_initial.py文件,点开查看:

……
operations = [
        migrations.CreateModel(
            name='Person',
            fields=[
                ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                ('first_name', models.CharField(max_length=30)),
                ('last_name', models.CharField(max_length=30)),
            ],
        ),
    ]

该文件还没有完全转换为sql语句,但也可以看出表中有三个字段,分别为id,first_name,last_name.

注意:使用python manage.py makemigrations是对所有的app进行检查,是否有appmodel新增 / 更改。如果我们在同时开发多个app,且自己只负责某 一个 / 几个,则应该指定app名称

python manage.py makemigrations my_app

4. 使用python manage.py migrate生成 / 更改数据表

使用python manage.py migrate可以将模型model内容真正映射到数据库中。
同样的,如果我们只想对具体的app起作用。

python manage.py migrate my_app

三、模型中的字段

模型中的字段与数据库表中的字段具有映射关系,我们上述使用的CharField会在数据库中创建varchar类型字段。

django常用内置模型字段

上一篇 下一篇

猜你喜欢

热点阅读