zoukankan      html  css  js  c++  java
  • 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

     

     
  • 相关阅读:
    laravel 5.5 仓库模式 文件之间接口与实现操作
    php 无线分类 根据子级找父级
    php 无限极分类,根据父级 找子级
    laravel5.4 中 dd和dump的区别。
    laravel hash密码生成和密码验证
    oracle建表详细信息
    关于组件的认识
    java的Thread Dump诊断工具
    weblogic连接池
    详解Oracle数据字典
  • 原文地址:https://www.cnblogs.com/Lin-Yi/p/7516240.html
Copyright © 2011-2022 走看看