Django模型API初略了解一下?

2019-08-29  本文已影响0人  MangfuStudio

Django模型

通过继承 Model类 创建模型

from django.db import models
class ModelName(models.Model):
    pass

Django中

模型字段

假设存在数据表 Blog

class Blog(models.Model):
    ...
    pass
方法(必要参数) 对应数据类型 例子
CharField(max_length=n) VARCHAR(n) models.CharField(50)
TextField() TEXT models.TextField()
DateField() DATE models.DateField()
IntegerField() INT models.IntegerField()
ForeignKey(Model) 外键 models.ForeignKey(Blog)
ManyToManyField() 数据表之间建立多对多关系 models.ManyToManyField(Blog)
EmailField() VARCHAR(254) models.EmailField()

操作数据表

Django使用 Manager类 来提供数据库操作的接口,当你继承 Model类 创建一个模型后,将可以通过 Model.objects 来使用 Manager类提供的接口

例如:

class MyModel(models.Model):
    ...
    pass

# 使用Manager类提供的all()方法来获取MyModel模型的所有记录
MyModel.objects.all()

假设数据库中有以下表

class Information(models.Model):
    ''' 个人信息表 '''
    name = models.CharField(max_length=50)
    age = models.IntegerField()
+--------+------+
| name   | age  |
+--------+------+
| 杜甫   |   20 |
| 鲁迅   |   50 |
| 李白   |   50 |
+--------+------+
操作-增
# 方法1
# 创建一条记录(实例化时插入数据)
info_1 = Information(name='狗蛋', age=18)

# 将记录写入数据表
info_1.save()
# 方法2
# 创建一条空记录(实例化后通过属性插入数据)
info_1 = Information()

# 通过属性方式添加数据
info_1.name = '狗蛋'
ingo_1.age = 18

# 数据写入数据表
info_1.save()
# 方法3
# 使用 create() 创建的记录直接写入到数据表,无需再调用 save() 手动保存
Information.objects.create(name='狗蛋', age=18)
+--------+------+
| name   | age  |
+--------+------+
| 杜甫   |   20 |
| 鲁迅   |   50 |
| 李白   |   50 |
| 狗蛋   |   18 |
+--------+------+
操作-查
# 获取字段name为杜甫的记录,注意:get()一次只能获取一条记录,
# 当数据表中有多条记录符合条件时抛出DoesNotExist异常
information.objects.get(name='杜甫')

# 使用多个条件检索数据,获取字段name=鲁迅,age=50的记录
information.objects.get(name='鲁迅', age=50)

# 一次查找符合条件的多条记录, 以下返回age在50的作者(鲁迅、李白)的记录
information.objects.filter(age=50)

# 根据排除条件检索记录, 以下返回年age不是50的作者(杜甫、狗蛋)的记录
information.objects.exclude(age=50)

# 检索数据表所有记录
information.objects.all()
操作-删

根据以上操作可以推断出删除记录的接口为 information.objects.delete(),但现实是Django为了防止information.objects.delete()误删清空数据表所有数据,删除操作要在记录级别上使用,换句话说,没有 information.objects.delete() 接口,要删除记录,您要先检索数据再删除。

# 错误使用方法,删除数据表中名字为李白的作者的记录
information.objects.delete(name='李白')

# 以下是正确使用方法

# 删除数据表中名字为李白的作者的记录
information.objects.get(name='李白').delete()
# 或者
author_lb = information.objects.get(name='李白')
author_lb.delete()

# 删除多条记录,从数据表删除所有年龄为50的作者的记录(鲁迅、李白)
information.objects.filter(age=50).delete()
# 或者
author_list = information.objects.filter(age=50)
author_list.delete()
操作-改

修改记录可以先检索数据,修改后调用 save() 保存

# 修改作者狗蛋年龄为17岁
author_gd = information.objects.get(name='狗蛋')
author_gd.age = 17
author_gd.save()
上一篇 下一篇

猜你喜欢

热点阅读