美文网首页
Django模型API初略了解一下?

Django模型API初略了解一下?

作者: MangfuStudio | 来源:发表于2019-08-29 15:10 被阅读0次

Django模型

通过继承 Model类 创建模型

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

Django中

  • 一个Model类代表一个数据表
  • 一个Model类实例代表数据表一条记录

模型字段

假设存在数据表 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()

相关文章

  • Django模型API初略了解一下?

    Django模型 通过继承 Model类 创建模型 Django中 一个Model类代表一个数据表 一个Model...

  • Django 模型API基本数据访问

    一旦你创建了模型,Django自动为这些模型提供了高级的Python API。 运行 python manage....

  • Django Database API

    最近在和朋友一起学习Django,首先简单学习一下它的Database API。首先按照如下模型创建三个表: 创建...

  • 数据库API

    Django官方文档 执行查询 一旦创建 数据模型 后,Django 自动给予你一套数据库抽象 API,允许你创建...

  • Django - 02-Django模型

    [toc] 1 模型 Django对各种数据库都提供了很好的支持,Django为这些数据库提供了统一的调用API,...

  • 4.7 django 模型QuerySet API

    QuerySet API: 我们通常做查询操作的时候,都是通过模型名字.objects的方式进行操作。其实模型名字...

  • 03-Django模型

    一、模型 Django对各种数据库提供了很好的支持,Django为这些数据库提供了统一的调用API(即不管底层操作...

  • Django模型

    一、模型 Django对各种数据库提供了很好的支持,Django为这些数据库提供了统一的调用API(即不管底层操作...

  • 模型使用指南

    模型使用指南 前言 Django对数据库提供了很好的支持,对不同的数据库,django提供了统一调用的API,我们...

  • 03-Django模型

    一、模型 Django对各种数据库提供了很好的支持,Django为这些数据库提供了统一的调用API(即不管底层操作...

网友评论

      本文标题:Django模型API初略了解一下?

      本文链接:https://www.haomeiwen.com/subject/kipiectx.html