精华内容
下载资源
问答
  • 对多、多对模型关系的建立和增删改查要注意的问题 : 1.在维护关系的一方使用:models.OneToOneField(另个一方模型类名称,on_delete=models.CASCADE) eg: from django.db import models ...

    一对一、一对多、多对多模型关系的建立和增删改查要注意的问题

    一对一:

    1.在维护关系的一方使用:models.OneToOneField(另一个一方模型类名称,on_delete=models.CASCADE)

    eg:

    from django.db import models
    
    class Wife(models.Model):
        name = models.CharField(max_length=10)
        age = models.IntegerField()
        
        #重写
        def __str__(self):
            return self.name
    
        #表的重命名
        class Meta:
            db_table = 'a_wife'
    
    class Husband(models.Model):
        name = models.CharField(max_length=10)
        age = models.IntegerField()
    
        #一对一关联
        o2o = models.OneToOneField(Wife,on_delete=models.CASCADE)
    
        def __str__(self):
            return self.name
    
        class Meta:
            db_table = 'a_husband'

    2.非维护关系的一方模型对象创建:

       1)变量名 = 非维护关系的一方对象模型名.对象管理器(非自定义默认为objects).create(字段名=值,...)

       2)非维护关系的一方对象模型名.对象管理器(非自定义默认为objects).create(字段名=值,...)

       3)变量名 = 非维护关系的一方对象模型名(字段名=值,...)

          变量名.save()进行保存

    维护关系一方的模型的创建:

    1)通过非维护关系一方的实例化对象关联

    变量名 = 维护关系一方模型对象名.对象管理器(非自定义默认为objects).create(字段名=值,...关联变量名=非维护关系一方实例变量名)

    2)通过对应表的外键关联

    变量名 = 维护关系一方模型对象名.对象管理器(非自定义默认为objects).create(字段名=值,...关联变量名_非维护关系一方主键字段名=非维护关系一方主键字段值)

    eg:

    # 1)
    w1=Wife.objects.create(name='小妖',age=25);
    # 2)
    Wife.objects.create(name='小妖',age=25);
    # 3)
    w3=Wife(name='小妖',age=25);
    w3.save()
    

    3.非维护关系的一方模型对象的删除:

       变量名 = 非维护关系的一方对象模型名.对象管理器(非自定义默认为objects).git(字段名=值,...)

       变量名.delete()

    eg:

    #在不维护关系的一方进行删除时:因为在维护关系的一方与其进行了关联,即在维护关系的一方有其数据的存在,所以不维护关系一方的数据删除后,维护关系的一方的与其有关联的数据也会一并删除
    #在维护关系的一方进行删除时,则不会影响不维护关系一方的表的数据
    d2=Wife.objects.get(id=2);
    
    d2.delete();
    

    4.非维护关系的一方模型对象的修改:

       先进行查找:变量名 = 非维护关系的一方对象模型名.对象管理器(非自定义默认为objects).git(字段名=值,...)

       变量名.字段名 = 修改后的值

       变量名.save()

    eg:

    h=Husband.objects.get(id=2);
    
    h.name='颙颜';
    
    h.save()
    

     

               5.其实查找问题一直贯穿其它几个操作之中。

    一对多:

    1.模型建立需要注意:多方模型内创建外键类属性,关联一方:

    变量名 = models.ForeignKey(一方模型类名称,on_delete=models.CASCADE)

    2.模型创建:

    一方:参考一对一中的创建

    多方:

    1)通过“一”方的实例化对象关联

    2)通过对应表的外键关联

    3)通过“一”方添加对象:变量名 = 一方实例化对象.多方对象模型名_set.create(字段名=值,...)

    3.查询:

    从一方查询多方:使用“多”方模型类小写_set,作为“一”方容器。

    从“多”方查询“一”方: 使用“多”方外键属性直接获取对应的“一”方实例

    4.删除、修改就是基本的操作

    多对多:

    1.多方创建模型关系

    models.ManyToManyField(另一个多方模型类,through="中间关系模型类")

    eg:

    #在中间模型类中至少有两个外键类属性,分别关联两个多方模型。
         
         class Student(models.Model):
               pass
    
         class Course(models.Model):
             name = models.CharField(max_length=10)
             stu = models.ManyToManyField(Student,through="Student_Course") # 多对多关系
    
         class Student_Course(models.Model):   # 中间模型,负责维护两个“多方”模型
             student = models.ForeignKey(Student,on_delete=models.CASCADE)  # 关联Student模型的外键
             course = models.ForeignKey(Course,on_delete=models.CASCADE) # 关联Course模型的外键
             score = models.FloatField()

    2.维护关系的和不负责维护关系的创建都是通过基本的创建方式实现

    第三方关系表的创建则可以用实例化对象关联和外键值关联

        #使用实例化对象关联
           sc1 = Student_Course.objects.create(student=stu1,course=course1,score=85)
        #使用外键值关联
           sc3 = Student_Course.objects.create(student_id=3,course_id=1,score=69)

    3.查询:

    从不负责的多方查询另一个多方

        #例如:1号学生选的课程
            student1 = Student.objects.get(id=1)
            courses = student1.course_set.all()  # 对方模型类小写_set

    从负责关联的多方查询另一个多方
           

        #例如:查询选择2号课程的学生
           course2 = Course.objects.get(id=2)
           students = course2.stu.all()  # stu为关联类属性

    4.修改和删除就是基本的操作

    展开全文
  • Model: 表与表之间的关系:hasOne 一对一( $fields, $referenceModel, $...hasMany 一对多 ( $fields, $referenceModel, $referencedFields : 当前表中的字段, 对应关系模型, 对应关系模型中表的字字

    Model:

    表与表之间的关系:hasOne 一对一( $fields, $referenceModel, $referencedFields : 当前表中的字段, 对应关系模型, 对应关系模型中表的字字段 )

    hasMany 一对多 ( $fields, $referenceModel, $referencedFields : 当前表中的字段, 对应关系模型, 对应关系模型中表的字字段 )

    hasManyToMany 多对多

    belongsTo 多对一( 属于 ) ( $fields, $referenceModel, $referencedFields : 当前表中的字段, 对应关系模型, 对应关系模型中表的字字段 )

    如项目中存在命名空间 则 要在对应的关系中添加alias参数 array( 'alias' => 'namespace' )

    例:多对一

    $this->belongsTo('company_id', 'App\Models\ErpCompanys', 'id', ['alias' => 'ErpCompanys']);
    取得关联表中name信息的phalcon代码:

    public function userCarAction(){
            if($this->request->isPost()){
                $this->view->disable();
                $info = ErpCompanyCar::findFirst();
                $name = $value->ErpCompanys->name;
            }
            
        }

    官方文档地址:https://docs.phalconphp.com/zh/latest/reference/model-relationships.html#relationships-between-models



    展开全文
  • django模型 数据库设计学习: 作用:设计的好,会清晰,且易于理解,后续开发也事半功倍,易于维护。 基本原则: 1. 的表,两表的属性实际上完全可以合并成个表,共用个...3. 多对多的表,则必须设中间...

    django模型 数据库设计学习

    作用:设计的好,会清晰,且易于理解,后续开发也事半功倍,易于维护。
    基本原则
    1. 一对一的表,两表的属性实际上完全可以合并成一个表,共用一个主键即可;
    2. 一对多的表,可以设中间关联表,也可以将关联表并入“多”这头;若设独立关联表,则可引入“多”这头的主键作为其主键,也可另立主键并将“一”和“多”两表的主键作为关联表的外键;
    3. 多对多的表,则必须设中间关联表,关联表设独立主键,并引入两个“多”头的表的主键作为关联表的外键。

    4. 能用1对1的,就不用1对多;能用1对多的,就不用多对多,往简单化方向靠;
    5. 能当属性处理的,尽量当属性,而不是当实体处理去另立新表,这样可使问题简化。
    6. 把意义相近联系紧密的属性放在一张表内,而不是拆在多张表中。

    三种关系解读
    ForeignKey: 多对一
    ManyToManyField:多对多
    OneToOneField: 一对一
    :要求第一个参数是一个模型类,需要使用verbose_name才能指定自述名。

    废话不多说,先来个简单的模型实例:

    class Category(models.Model):
        '''
        文章分类
        '''
        name = models.CharField(max_length=20,verbose_name='文章类别')
        number = models.IntegerField(default=1,verbose_name='分类数目')
    
    class Tags(models.Model):
        '''
        文章标签
        '''
        name = models.CharField(max_length=20,verbose_name='文章标签')
        number = models.IntegerField(default=1, verbose_name='标签数目')
    
    class Blog(models.Model):
        '''
        博客
        '''
        title = models.CharField(max_length=100,verbose_name=u'标题')
        content = models.TextField(default='',verbose_name=u'正文')
        create_time = models.DateTimeField(default=timezone.now,verbose_name=u'创建时间')
        modify_time = models.DateTimeField(auto_now=True,verbose_name=u'修改时间')
        click_nums = models.IntegerField(default=0,verbose_name=u'点击量')
        category = models.ForeignKey(Category,on_delete=models.CASCADE,verbose_name=u'文章类别')
        tags = models.ManyToManyField(Tags,verbose_name=u'文章标签')
    
    class Comment(models.Model):
        '''
        评论
        '''
        name = models.CharField(max_length=20,default=u'佚名',verbose_name=u'姓名')
        content = models.TextField(verbose_name=u'内容')
        create_time = models.DateTimeField(auto_now_add=True,verbose_name=u'创建时间')
        blog = models.ForeignKey(Blog,verbose_name=u'博客')
    

    说明:这是一个关于博客系统的模型设计。
    其中博客与文章类别是多对一;博客与标签是多对多;博客与评论是多对一;
    Foreignkey:用被关联的模型的小写名称做为ForeignKey字段的名,当然你也可以取别名。
    ManyToMany:用被关联的模型的小写名称的复数形式做为ManyToMany字段的名.当两个模型都存在多对多关系,而需求是要了解更多其中的细节,那我们可以借助*through*参数,使他转向一个中介模型。如下实例:

    class Person(models.Model):
    		name = models.CharField(max_length=128)
    		class Group(models.Model):
    		name = models.CharField(max_length=128)
    		members = models.ManyToManyField(Person, through='Membership
    ')
    class Membership(models.Model):
    		person = models.ForeignKey(Person)
    		group = models.ForeignKey(Group)
    		date_joined = models.DateField()
    	   invite_reason = models.CharField(max_length=64)
    

    OneToOne::当某个对象想扩展自另一个对象,那可以再这个对象的主键上添加一对一的关系。例如:

    class Place(model.Model):
    		 address=models.CharField()
    		phone=models.Integer()
    
    class Restaurant(Models.model):
    		place=models.OneToOneField(Plase)
    

    说明:这里创建了一个’Place’数据库,里面有一些常用的字段,那接下来我想在已有基础上新增’Restaurant’数据库,而且不想将已有的字段赋值到’Restaurant’模型中,那我们可以添加OneToOneField字段,指向’Place’. (在这里我们应该使用典型的继承,它隐含了一个一对一的关系)

    总结:数据库的这三种关系就是这么简单,但在运用的过程中,我们需要结合具体的需求,多对
    经常发生的情景是有标签(Tags)的时;OneToOne(一对一):类似于继承,在设计模型时,可以将多个数据路中共有的字段集中起来,然后使用OneToOne,进行关联。

    展开全文
  • 、概念模型  (1)对象模型:可以双向关联,而且引用的是对象,而不是个主键!...(1)多对一关系,只需要在多方使用个独立的列来引用1方的主键即可     (2)关系 (3)多对多关系

    一、概念模型

     (1)对象模型:可以双向关联,而且引用的是对象,而不是一个主键!

      
     (2)关系模型:只能多方引用一方,而且引用的只是主键,而不是一整行记录。在数据库中表!

     

    二、概念模型在数据库表中的约束

     

    (1)多对一关系,只需要在多方使用一个独立的列来引用1方的主键即可   

     

     (2)一对一关系




    (3)多对多关系





    展开全文
  • tp5.1模型一对一一对多查询

    千次阅读 2018-10-11 17:58:32
    总结: 不管是一对一还是一对多,我们进行总结一下, ...一对一是使用关联的字段查关联模型的id,而一对多是使用关联模型的关联字段查询本模型的id   一对多的应用场景主要是: 当有篇文章有个评论时 ...
  • powerdesigner物理模型怎么设置对多、多对多、对多关系?
  • 首先我们上次讲解什么是一对的关联,今天我们讲解一对多的关联,举个例子。这里的表我们知道沿用上次的表就行了,有些地方稍作小小的修改,假设我们...首先我们知道模型中告知我们,一对多的方法有hasMany()方法和b...
  • keras:构建输入输出模型输入单输出模型

    万次阅读 多人点赞 2019-09-10 10:58:51
    个具有两个输入和两个输出的模型: 我们试图预测 Twitter 上的条新闻标题有多少转发和点赞数。模型的主要输入将是新闻标题本身,即系列词语,但是为了增添趣味,我们的模型还添加了其他的辅助输入来接收额外的...
  • 关联模型一对多增加数据 增加数据后效果如下 把id为1的张三 的content修改为hello 效果如下 thinkphp 关联模型 一对多数据更新时 一定在新增的部分加入 关联模型的主键 我们这里就是加入了$condition...
  • 永磁同步电机矢量控制()——数学模型

    万次阅读 多人点赞 2019-05-17 09:51:21
    导师研究的课题是永磁同步电机的控制,首先给我安排的任务就是将其矢量控制系统仿真搭建出来。... 永磁同步电机是个非线性系统,具有变量、强耦合的特点。我们其分析的时候有以下假设: ...
  • 1. 一对多查询模型 from flask_sqlalchemy import SQLAlchemy ​ db = SQLAlchemy() ​ class Student(db.Model): # Many __tablename__ = 'tb_student' s_id = ... # 主键 ... s_grade = ...
  • 一对多的场景比较。像手册给出的例子。文章和评论,一片文章可以对应个评论,个人也可以对应条评论。定义的方法为hasMany()。如下图所示: hasMany()第个参数为关联的模型名称,第二个为外键名称,也...
  • keras输入输出模型

    千次阅读 2019-05-20 19:18:37
    keras输入输出模型 主要输入(main_input): 新闻标题本身,即系列词语。 辅助输入(aux_input): 接受额外的数据,例如新闻标题的发布时间等。 该模型将通过两个损失函数进行监督学习。 较早地在模型中使用主...
  • Tensorflow 同时载入模型

    万次阅读 热门讨论 2017-12-13 16:46:25
    有时我们希望在个python的文件空间同时载入模型,例如 我们建立了10个CNN模型,然后我们又写了个预测类Predict,这个类会从已经保存好的模型restore恢复相应的图结构以及模型参数。然后我们会创建10个...
  • 经典线性模型自变量的线性预测就是因变量的估计值。 广义线性模型:自变量的线性预测的函数是因变量...本篇是逻辑回归理论和应用的学习总结、以及广义线性模型导出逻辑回归的过程,下篇将最大熵模型的学习总结。
  • 刚开始直接采用调用模型的方法: (1)定义网络 (2)新建sess:sess = tf.Session(config=config)...但是,如果在个项目中同时导入模型,会报错,应该是graph冲突,所以需要给每个模型单独新建graph:g1 =
  • Java线程模型

    千次阅读 2014-11-08 22:50:22
    谈到Java线程就涉及到线程的模型及Java线程与底层操作系统之间的关系。正如我们熟知,现代机器可以分为硬件和软件两大块,如图2-5-1-1,硬件是基础,软件提供实现不同功能的手段。而且软件可以分为操作系统和...
  • 时间序列模型):模型概述

    万次阅读 多人点赞 2019-04-21 21:47:12
    时间序列模型):模型概述 时间序列模型 (二):移动平均法 时间序列模型 (三):指数平滑法 时间序列模型 (四):差分指数平滑法、 自适应滤波法v 时间序列模型 (五): 趋势外推预测方法 时间序列...
  • 一对多关联,例如个用户有个订单则需要在数据库的订单表中添加用户ID//在订单model中使用 定义与用户表user的一对多关联 public function user() { return $this->belongsTo('user'); } // 在用户...
  • 马尔科夫模型系列文章()——马尔科夫模型

    万次阅读 多人点赞 2019-08-28 15:03:09
    前言:我发现网上很博客在讲马尔科夫相关的知识点的时候, 总是讲的不是很清楚,有的纯粹只关注理论,看不太懂,有的上来就搞几个算例,更是一片懵逼,有的又将一些概念一会儿换个说法,一会儿是马尔科夫过程...
  • logistic回归是个二分类模型

    万次阅读 2021-03-09 16:54:52
    首先给大家强调一点,这是个分类模型而不是个回归模型!下文开始将从不同方面讲解logistic回归的原理,随后分别使用梯度上升算法和随机梯度上升算法将logistic回归算法应用到实例中。 、logistic回归和线性...
  • 首先是一对一关联,假设我们有用户表,每个用户都有个个人资料字段。那么对应的就有了11的关联,个用户,对应关联个资料字段。定义如下图所示 默认的关联方式是inner Jion ,在5.0.3版本之后支持了,...
  • 添加字段到Django多对模型表的关联表的方法 作者:Wally Yu ...最近遇到个麻烦事,想在Django的多对多自动生成的关联表中添加个字段 原来的模型如下: class ProjectModule(models.Model
  • Keras搭建输入模型

    万次阅读 热门讨论 2018-11-14 15:16:16
    当我们的任务涉及到个维度不同的数据来拟合个目标时,我们需要构建输入模型模型构建  假设我们需要搭建如下的模型,输入数据分别为100维和50维的向量,输出为0或1: from keras.layers import Conv...
  • 2.1 维度模型 2.1.1 星型模型 2.1.2 雪花模型 2.1.3星座模型 2.2 范式模型 2.3 Data Vault模型 2.4 Anchor模型
  • OSI七层模型详解

    万次阅读 多人点赞 2011-12-28 19:43:16
    OSI 七层模型通过七个层次化的结构模型使不同的系统不同的网络...个设备工作在哪层,关键看它工作时利用哪层的数据头部信息。网桥工作时,是以MAC头部来决定转发端口的,因此显然它是数据链路层的设备。 具体说:
  • ARMA模型和ARIMA模型一种误差检验

    万次阅读 2017-09-11 10:21:36
    ARMA模型和ARIMA模型误差检验这里上面 数学建模中的ARMA模型和ARIMA模型的使用是否可靠提出种误差的检验方法。
  • 不得不说,这深度学习框架更新太快了尤其到了Keras2.0版本,快到Keras中文版好多都是错的,快到官方文档也有旧的没更新,... 笔者先学的caffe,从使用来看,比caffe简单超级,非常好用,特别是重新训练模型,但是
  • 个简易的html盒子模型

    万次阅读 2018-05-28 19:12:38
    盒子的基本概念所谓盒子模型,其实就是在网页设计中进行CSS样式设置所使用的种思维模型。使用盒子模型主要是为了便于控制网页中的元素。在盒子模型中,个页面就是有大大小小许多盒子通过不同的排列方式堆积而成...
  • 在仿真应用中,切换红外效果,地形,树木,如果是模型的话,直接更改材质球或者改材质球的图片,但是对于场景中刷出来的树木,更改材质,可以实现更改但是,暂时没有找到办法...(可用于模型中有个材质球的情况)

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 2,725,399
精华内容 1,090,159
关键字:

多对一模型