Django的基本使用(三)

一、一对一关系

场景: 人 (1个)—- 身份证 (1个) 1:1

外键关联格式:

关联的属性 =  models.OneToOneField(关联表的类名)

django会自动的去外键关联

1.设计模型
(1)人

name 姓名
age  年龄
....

(2)身份证 idCard

idNumber 身份证号
address  地址
sex     性别
.....

person — 外键 — OneToOneField 一对一
例:

i_person = models.OneToOneField(Person)

2.插入数据
(1)人

person.save()

(2)身份证

# 先找到需要绑定的人
person = Person.objects.filter(p_name="三胖胖3").first()
# 外键 --- 绑定对象
idcard.i_person = person
idcard.save()

3.修改

4.删除

(1)如果删除的是主表中的数据, 如果在从表中没有对应的数据,会直接删除该数据, 如果在从表中存在对应的数据,会连同从表中的数据一同删除

(2)如果删除的是从表中的数据,会直接删除该数据,主表中的数据不会受影响

5.表的关系(主 — 从)

主表(被动连接的一方) —- 从表(主动连接的一方)

6.设置外键关联的数据的保护模式

on_delete的模式:

  • models.CASCADE 默认模式:如果删除的是主表中的数据, 如果在从表中存在对应的数据,会连同从表中的数据一同删除
  • models.PROTECT 保护模式:当删除主表的数据的时候, 如果有对应的从表数据,则不能删除,程序报错,如果没有对应的从表数据,则正常删除
  • models.SET_DEFAULT 设置为默认值, 当删除主表的数据的时候, 如果有对应的从表数据, 则主表数据直接删除,从表对应的外键自动设置为默认值
  • models.SET_NULL 设置为默认值, 当删除主表的数据的时候, 如果有对应的从表数据, 则主表数据直接删除,从表对应的外键自动设置为空值
  • models.SET(value) 设置为默认值, 当删除主表的数据的时候, 如果有对应的从表数据, 则主表数据直接删除,从表对应的外键自动设置为指定的值

如:

i_person = models.OneToOneField(Person,on_delete=models.PROTECT)

二、一对多 — ForeignKey

场景: 人(1个)—-爱好(多个) 1:N

1.设计表

(1)person表
(2)hobby爱好表

name 爱好名
price 爱好的花费
.....
# 外键
person = models.ForeginKey(类名)

2.添加数据

(1)人
(2)爱好
可以给一个人绑定多个爱好

3.修改

4.删除数据

(1)如果删除的是主表中的数据, 如果从表中没有对应数据, 直接删除该主表数据,如果从表中有对应的数据, 会连同从表中对应的(多条)数据一同删除

(2)如果删除的是从表中的数据, 会直接删除该数据, 主表中的数据不会受影响

5.设置外键关联的数据的保护模式 —— 跟一对一类似

三、多对多

场景:
用户(1个) —– 商品(多个)
商品(1个) ——用户(多个)
用户(多个)— 商品(多个)

1.设计模型
(1)buyer 用户

name 名字
age  年龄
.....

(2)goods 商品 (相对不重要)

name 商品名
price 商品价格
# 如:
g_buyer = models.ManyToManyField(Buyer)

(3)第三张表用来维护两张表的关系 — django可以自动生成
外键关联用户id
外键关联商品id

2.添加数据

如:

# 获得一个购买者
buyer1 = Buyer.objects.filter(pk=1).first()
buyer2 = Buyer.objects.filter(pk=2).first()
buyer3 = Buyer.objects.filter(pk=3).first()

# 获得一个商品
goods = Goods.objects.filter(pk=2).first()

# 添加数据,一对多关系时,用add 表示添加,且可以添加多个
goods.g_buyer.add(buyer1)
goods.g_buyer.add(buyer2)
goods.g_buyer.add(buyer3)

goods.save()

3.删除数据

(1)主表(购买者)

(2)主表(商品)

(3)(从表)自动生成的表
如果删除的是主表中的数据, 如果从表中没有关联的数据, 直接删除, 如果从表中有关联的数据, 会连同从表中的关联数据(多条)一同删除

试: 用ForeginKey实现多对多关系,并进行一些数据的操作

四、查询

1.一对一

(0)自己查询自己, 直接查找到对应的对象既可

(1)根据从表中的信息查询主表信息
从表中有一个外键关联的字段, 该字段与模型中的属性对应, 我们可以直接通过该 外键属性直接获取到关联的数据对象
如:

# 可以直接获得关联的数据对象
person = idcard.i_person

(2)根据主表信息查询从表信息
django在创建主表与从表关系的时候, 会自动为主表对应的模型, 创建一个隐式属性, 该隐式属性就是对应的从表数据对象

格式: 主表模型对象.从表模型名的全小写  即直接可以获得从表数据
如: idcard = person.idcard

2.一对多

(1)根据从表中的信息查询主表中的信息,可以直接根据外键属性获取对象

(2)根据主表中的信息查询从表中的信息

格式: 主表模型对象.从表模型名的全小写_set.查询方法   即可直接获得从表中对应的多条数据
如:  hobbys = person.hobby_set.all()  

3.多对多

(1)根据从表中的信息查询主表(多条)中的信息

格式: 从表模型对象.外键属性.查询方法
如: buyers = goods.g_buyer.all()

(2)根据主表中的信息查询从表(多条)中的信息

格式: 主表模型对象.从表模型名的全小写_set.查询方法 
如: goodses = buyer.goods_set.all()

五、Django中的隐式属性, 显示属性

1.显示属性

开发人员直接定义的属性就是显示属性

2.隐式属性

在Django中, Django为了便于开发提供了很多的隐式属性(Django自带的), 这些隐式属性有很多强大的功能, 如: “查询”, 创建….

六、自定义的manager

需求1: 方便的创建测试数据

自定义manager的使用

(1)在models中定义一个类(myManager)继承 Manager

from django.db.models import Manager

(2)在类中既可以定义自己的方法

如: 方便的创建测试数据
def createTestStudnet(self,name,age):
    student = Student()
    student.s_name = name
    student.s_age = age
    # .....
    student.save()

(3)在对应的模型类中添加一个属性, 该属性值为 自定义manager对象

    如:  mymanager = myManager()

注意: Manger对象就是我们平时常用的obejcts对象, 如果自己定义manager对象, 那么objects对象不能使用了,应该使用自己定义manager对象

(4)使用
如:

Student.mymanager.createTestStudnet("死胖子",34)
格式: 类名.自己定义的manger对象名.方法()

需求2: 过滤掉已经被逻辑删除的数据

# 过滤掉所有逻辑删除的数据
# 方法的重写 所有的查询方法
def get_queryset(self):
    return super(MyStudentManager, self).get_queryset().exclude(s_isdelete=True)

以上方法需要在myManger中定义,定义后所有的查询方法,会自动的过滤掉逻辑删除的数据

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
PyCharm是一款非常流行的Python集成开发环境(IDE),它提供了许多便捷的功能来开发和调试Django框架的应用程序。下面是使用PyCharm开发Django框架的一些基本步骤: 1. 安装PyCharm:首先,你需要下载并安装PyCharm IDE。你可以从JetBrains官方网站上下载适用于你操作系统的版本,并按照安装向导进行安装。 2. 创建Django项目:在PyCharm中,通过选择 "File" -> "New Project",然后选择"Django"作为项目类型,并指定项目的名称和存储路径。PyCharm将会自动创建一个基本Django项目结构。 3. 配置Python解释器:在PyCharm的设置中,确保你已经配置了正确的Python解释器。你可以通过 "File" -> "Settings" -> "Project: [项目名称]" -> "Python Interpreter" 来进行配置。 4. 配置Django运行配置:在PyCharm的顶部工具栏中,点击右侧的下拉菜单,选择 "Edit Configurations"。在弹出的对话框中,点击 "+" 按钮添加一个新的Django配置。填写 "Name" 和 "Host" 字段,并在 "Target" 字段中选择你的Django项目的入口文件(通常是manage.py)。点击 "OK" 保存配置。 5. 运行Django项目:在PyCharm的顶部工具栏中,选择你刚刚创建的Django配置,并点击运行按钮(绿色的角形)。PyCharm将会启动Django开发服务器,并在浏览器中打开项目的首页。你可以在PyCharm的 "Run" 面板中看到Django服务器的输出日志。 6. 编写和调试代码:使用PyCharm的编辑器编写Django应用程序的代码,包括视图函数、模型、URL路由等等。PyCharm提供了智能代码补全、语法检查以及调试功能,使得开发过程更加高效和方便。 希望这些步骤能帮助你开始使用PyCharm开发Django框架的应用程序。如果你有任何进一步的问题,请随时提问!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值