django mysql 表的一对一 一对多 多对多

表结构的设计

  一对一

  多对一  将key写在多

  多对多

外键:

  描述  多对一的关系

  写在多的一方

  class Book(models.Model)

    title = models.CharField(max_length=32,unique=Ture)

    publisher = models.ForeignKey (to=Publisher,on_deleete=models.CASADE)

    publisher = models.ForeignKey(to=‘Publisher‘, on_delete=models.CASCADE)  加双引号,是映射

  book_obj.publisher  --->> 书籍关联的对象

  book_obj.publisher_id --->> 书籍关联的对象id 直接从数据库获取的  可以直接点获得

  设置外键(关联出版社对象 )  修改

  book_obj.publisher   = 出版社对象

  book_obj.save()

  book_obj.publisher_id = 1

  book_obj.save()

  创建:

  models.Book.objects.create(title=‘新的书名‘,publisher=models.Publisher.objects.get(id=1))

  models.Book.objects.create(title=‘新的书名‘,publisher_id=1)

多对多

   当要获取所有的对象中的另一个对象的时候,需要在函数中all()  在另一个html中all

  teacher_all = models.teacher_list.objects.all()   这里的all取得是是所有的对象
  {% for teacher in teacher_all %}    这里是获取每个对象
    {% for cls in teacher.cls.all %}  这里获取的是是cls中的对象

  class Author(models.Model):

    name = models.CharField(max_length=32,unique=Ture)

    books = models.ManyToManyField(‘book‘)

  

  author_obj.books   --->>> 不是关联的对象,是管理的对象

  author_obj.books   ---->> 获取到跟作者关联的所有书籍对象

  author_obj.books.set([1,2,3,4])  ---->>不是author_obj.save() 增加和修改时候使用set

  在获取多个对象时使用getlist  获取多个

  

  模板相关
 
  if判断
   {% if book in edit_obj.books.all %}
    <option value="{{ book.id }}" selected>{{ book.title }}</option>
   {% else %}
    <option value="{{ book.id }}">{{ book.title }}</option>
   {% endif %}
  
  
   {% if 条件1 %}
    操作1
   {% elif 条件2 %}
    操作2
   {% else %}
    操作3
   {% endif %}
  
  for循环中
   {% for i in name_list %}
    {{ forloop.first }} 第一次循环
    {{ forloop.last }} 最后一次循环
   {% endfor %}

  

原文地址:https://www.cnblogs.com/lnrick/p/9614218.html

时间: 2024-10-12 12:57:28

django mysql 表的一对一 一对多 多对多的相关文章

mysql表的一对一/一对多/多对多联系

1.数据库中的多对多关联关系一般需采用中间表的方式处理,将多对多转化为两个一对多. 2.通过表的关系,来帮助我们怎样建表,建几张表. 一对一 一张表的一条记录一定只能与另外一张表的一条记录进行对应,反之亦然. 学生表:姓名,性别,年龄,身高,体重,籍贯,家庭住址,紧急联系人 其中姓名.性别.年龄.身高,体重属于常用数据,但是籍贯.住址和联系人为不常用数据 如果每次查询都是查询所有数据,不常用的数据就会影响效率,实际又不用 常用信息表:ID(P),姓名,性别,年龄,身高,体重 不常用信息表:ID(

表关系(一对一,一对多,多对多)

可以在数据库图表中的表之间创建关系,以显示一个表中的列与另一个表中的列是如何相链接的. 在一个关系型数据库中,利用关系可以避免多余的数据.例如,如果设计一个可以跟踪图书信息的数据库,您需要创建一个名为 titles 的表,它用来存储有关每本书的信息,例如书名.出版日期和出版社.您也可能保存有关出版社的信息,诸如出版社的电话.地址和邮政编码.如果您打算在 titles 表中保存所有这些信息,那么对于某出版社出版的每本书都会重复该出版社的电话号码. 更好的方法是将有关出版社的信息在单独的表,publ

mybatis 一对一 一对多 多对多

一对一 一对多 多对多 原文地址:https://www.cnblogs.com/cwone/p/11909271.html

MySQL 表的一对一、一对多、多对多问题

将实体与实体的关系,反应到最终数据库表的设计上,将关系分为三种:一对一,一对多(多对一)和多对多,所有的关系都是表与表之间的关系; 一对一 一对一:一张表的一条记录只能与另外一条记录进行对应,反之亦然学生表:姓名,性别,年龄,体重,身高,婚姻状况,籍贯,家庭地址,紧急联系人 Id(P) 姓名 性别 年龄 身高 婚姻状况 籍贯 家庭地址 紧急联系人 体重 表设计成以上这种形式:符合要求,其中姓名,性别,年龄,身高体重属于常用数据,但是婚姻籍贯住址联系人属于不常用的数据,如果每次查询所有数据,不常用

SQLAlchemy_定义(一对一/一对多/多对多)关系

目录 Basic Relationship Patterns One To Many One To One Many To Many Basic Relationship Patterns 基本关系模式 The imports used for each of the following sections is as follows: 下列的 import 语句,应用到接下来所有的代章节中: from sqlalchemy import Table, Column, Integer, Forei

Hibernate 映射文件的配置 核心文件的配置 一对一 一对多 多对多 hibernate实现分页 Hibernate中session的关闭问题总结

以留言系统为实例 1 .配置映射文件:首先得引入约束dtd <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd"> 然后<hibernate-mapping></hibernate-mapping>映射标签 <

数据库表与表之间的一对多多对多的关系

一对一要约束 unique 多对多和一对一事通过一对多的基础上模拟的 原文地址:https://www.cnblogs.com/jintian/p/11161225.html

mytabits表关联一对一(多对一?)

association联合 联合元素用来处理"一对一"的关系.需要指定映射的Java实体类的属性,属性的javaType(通常MyBatis 自己会识别).对应的数据库表的列名称.如果想覆写的话返回结果的值,需要指定typeHandler. 不同情况需要告诉MyBatis 如何加载一个联合.MyBatis 可以用两种方式加载: select: 执行一个其它映射的SQL 语句返回一个Java实体类型.较灵活: resultsMap: 使用一个嵌套的结果映射来处理通过join查询结果集,映

一对多 多对多 一对一

一.一对多(Foreign Key) 1.建表存储员工信息 如果我们把员工所有信息放在一张表中,类似于我们将所有的代码都写在用一个py文件内 把所有数据都存放于一张表的弊端1.组织结构不清晰2.浪费硬盘空间(重复存储公共信息)3.扩展性极差(如果部门名称变化你去一个一个员工的更改部门名称?肯定不能) 应该怎么做?>>>解耦合!将上述一张表拆成员工和部门两张表! 确立表与表之间的关系 一定要换位思考(必须两方都考虑周全之后才能得出结论) 以员工表和部门表为例 先站在员工表看能否有多个员工对