• django的models模型 关联关系和关系查询


    模型类关系

    关系字段类型

    关系型数据库的关系包括三种类型:

    • ForeignKey:一对多,将字段定义在多的一端中。
    • ManyToManyField:多对多,将字段定义在两端中。
    • OneToOneField:一对一,将字段定义在任意一端中。
    一对多关系:
    #定义图书模型类BookInfo
    class BookInfo(models.Model):
        btitle = models.CharField(max_length=20)#图书名称
        bpub_date = models.DateField()#发布日期
        bread = models.IntegerField(default=0)#阅读量
        bcomment = models.IntegerField(default=0)#评论量
        isDelete = models.BooleanField(default=False)#逻辑删除
    
    #定义英雄模型类HeroInfo
    class HeroInfo(models.Model):
        hname = models.CharField(max_length=20)#英雄姓名
        hgender = models.BooleanField(default=True)#英雄性别
        isDelete = models.BooleanField(default=False)#逻辑删除
        hcontent = models.CharField(max_length=200)#英雄描述信息
        hbook = models.ForeignKey('BookInfo')#英雄与图书表的关系为一对多,所以属性定义在英雄模型类中
    多对多关系:
    class TypeInfo(models.Model):
      tname = models.CharField(max_length=20) #新闻类别
    
    class NewsInfo(models.Model):
      ntitle = models.CharField(max_length=60) #新闻标题
      ncontent = models.TextField() #新闻内容
      npub_date = models.DateTimeField() #新闻发布时间
      ntype = models.ManyToManyField('TypeInfo') #通过ManyToManyField建立TypeInfo类和NewsInfo类之间多对多的关系

     

    自关联:

    对于地区信息、分类信息等数据,表结构非常类似,每个表的数据量十分有限,为了充分利用数据表的大量数据存储功能,可以可以设计成一张表,内部的关系字段指向本表的主键,这就是自关联的表结构。

    #定义地区模型类,存储省、市、区县信息
    class AreaInfo(models.Model):
        atitle=models.CharField(max_length=30)#名称
        aParent=models.ForeignKey('self',null=True,blank=True)#关系

    关联查询:

    1 由多到一的访问语法:

    一对应的模型类对象.多对应的模型类名小写_set
    b = BookInfo.objects.get(id=1)
    b.heroinfo_set

    2 由多到一的访问语法:

    多对应的模型类对象.多对应的模型类中的关系类属性名

    h = HeroInfo.objects.get(id=1)
    h.hbook
    #多对应的模型类对象.关联类属性_id
    h = HeroInfo.objects.get(id=1)
    h.book_id

     

     
  • 相关阅读:
    【Anagrams】 cpp
    【Count and Say】cpp
    【Roman To Integer】cpp
    【Integer To Roman】cpp
    【Valid Number】cpp
    重构之 实体与引用 逻辑实体 逻辑存在的形式 可引用逻辑实体 不可引用逻辑实体 散弹式修改
    Maven项目聚合 jar包锁定 依赖传递 私服
    Oracle学习2 视图 索引 sql编程 游标 存储过程 存储函数 触发器
    mysql案例~tcpdump的使用
    tidb架构~本地化安装
  • 原文地址:https://www.cnblogs.com/Lin-Yi/p/7516240.html
Copyright © 2020-2023  润新知