Python-Django框架(四)

本文详细介绍了Django框架中模型的关联关系,包括一对一、一对多和多对多关系,以及如何在Model中定义这些关系。此外,还讨论了不同类型的关联关系查询、数据的增删改操作,特别是删除时的级联选项。最后,文章提到了Django的懒加载机制,即QuerySet的延迟执行特性。
摘要由CSDN通过智能技术生成

模型_02

一、关联关系

1、概述

关联关系指的是数据表之间的数据是相互依赖和影响关系,表之间有从属关系,比如,有一个用户表,用户又有订单表,则用户表与订单表之间就存在从属关系。

2、关联关系的种类
  • 一对一 一个人一本护照
  • 一对多 一个部门可以有多个员工
  • 多对多 一个学生有多门课,一门课有多个学生
3、Model中的关联关系
3.1 关系类型字段
  • ForeignKey(to=关系对方的类或类名或‘self’,on_delete=级联选项)
  • OneToOneField(to=关系对方的类或类名或‘self’,on_delete=级联选项)
  • ManyToManyField(to=关系对方的类或类名或‘self’)
4、关联关系Model搭建
4.1 一对多Model
1:*
class Category(models.Model):
    title = models.CharField(max_length=20)
    note = models.CharField(max_length=20)
    class Meta:
        db_table="t_category"

class Goods(models.Model):
    title = models.CharField(max_length=20,unique=True)
    price = models.FloatField()
    cate = models.ForeignKey(to=Category,on_delete=models.CASCADE) #关系属性
    class Meta:
        db_table = "t_goods"
4.2 一对一Model
1:1
class Passport(models.Model):
    note = models.CharField(max_length=20)
    person = models.OneToOneField(to="Person",on_delete=models.CASCADE,null=True) #关系属性
    class Meta:
        db_table="t_passport"

class Person(models.Model):
    name = models.CharField(max_length=20)
    age = models.IntegerField()
    class Meta:
        db_table="t_person"
4.3 多对多Model
*:*
class Student(models.Model):
    name = models.CharField(max_length=20)
    age = models.IntegerField()
    class Meta:
        db_table="t_student"
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值