Django多表操作

多表操作:以book,publish, author为例

  一对多:一旦确定一对多的关系,在多的一方(book)创建关联字段publish_id

  多对多:一旦确定多对多的关系,创建第三张表,比如Author2Book表,字段分别是id,Book_id, Author_id

  一对一:两张表其实就是一张表,在任意一张表创建关联字段

from django.db import models

# Create your models here.

#不用创建ID,Django自动创建主键

class Book(models.Model):
    title=models.CharField(max_length=32,unique=True)
    price=models.DecimalField(max_digits=8,decimal_places=2,null=True)# 999999.99
    pub_date=models.DateField()
    publish=models.ForeignKey(to="Publish",to_field="id",on_delete=models.CASCADE)django2.0需要写cascade
    authors=models.ManyToManyField(to="Author")  这里authors只是属性,不是字段,为了创建多对多关联表

    def __str__(self):
        return self.title

class Publish(models.Model):
    name=models.CharField(max_length=32)
    email=models.CharField(max_length=32)
    addr=models.CharField(max_length=32)

class Author(models.Model):
    name=models.CharField(max_length=32)
    age=models.IntegerField()
    这个不用# ad=models.ForeignKey(to="AuthorDetail",to_field="id",on_delete=models.CASCADE,unique=True)
    ad=models.OneToOneField(to="AuthorDetail",to_field="id",on_delete=models.CASCADE,)  用这个

class AuthorDetail(models.Model):
    gf=models.CharField(max_length=32)
    tel=models.CharField(max_length=32)

然后使用tools里面的run manage.py task 输入makemigrations和migrate生成数据库

就创建完多对多表啦~

原文地址:https://www.cnblogs.com/kateli/p/9240335.html

时间: 2024-10-07 21:41:07

Django多表操作的相关文章

Django -- 单表操作

ORM简介 1, ORM是 对象--关系--映射 的简称.实现了数据模型与数据库的解耦,即数据库的设计不需要依赖特定的数据库,通过简单的配置就可以轻松更换数据库 2, 类对象 --> sql --> pymysql --> mysql服务端 --> 磁盘,orm其实就是将类对象的语法翻译成sql语句的一个引擎 建表操作 1, 创建表 # app 应用下的 models.py 文件中写 from django.db import models class UserInfo(model

Django -- 多表操作

表之间的关系 一对一 xx=models.OneToOneField(to='要关联的表名',to_field='要关联表名的字段',on_delete=models.CASCADE) # on_delete 删除时的一些级联效果,to_field可以不用写,默认是关联到另一张表的主键,on_field在1.x版本的Django中不用写,默认是级联删除的,2.x的版本中必须要写 一对多 xx=models.foreignKey(to='要关联的表名',to_field='要关联表名的字段',on

Django分表操作及FQ方法

聚合 aggregate(*args, **kwargs) # 计算所有图书的平均价格 from django.db.models import Avg Book.objects.all().aggregate(Avg('price')) #{'price__avg': 34.35} aggregate()是QuerySet 的一个终止子句,意思是说,它返回一个包含一些键值对的字典.键的名称是聚合值的标识符,值是计算出来的聚合值.键的名称是按照字段和聚合函数的名称自动生成出来的.如果你想要为聚合

django单表操作

python——Django(ORM连表操作)

一对多 class UserType(models.Model): caption = models.CharField(max_length=32) class UserInfo(models.Model): user_type = models.ForeignKey(UserType)# user_type对象中封装id,caption username = models.CharField(max_length=32) age = models.IntegerField() 增: 1.外键

Django开发:(3.1)ORM:单表操作

MVC或者MVC框架中包括一个重要的部分,就是ORM,它实现了数据模型与数据库的解耦,即数据模型的设计不需要依赖于特定的数据库,通过简单的配置就可以轻松更换数据库,这极大的减轻了开发人员的工作量,不需要面对因数据库变更而导致的无效劳动 ORM是"对象-关系-映射"的简称. Mysql中的表对应python中的类,表的字段对应类的属性,表的记录对应类的实例化的对象 单表操作 创建表 1. 创建模型 创建名为app01的app,在app01下的models.py中创建模型: from dj

django的多表操作

django的多表操作 1.使用场景 在实际生产过程多,我们面对的数据纷繁复杂,此时就需要良好的数据结构设计,多表之间的约束关系为我们提供了数据管理以及查询的便利.在MYsql中我们利用外键(foreign key)来实现这样的约束关系,在django中我们通过调用相应的API来实现这样的功能. 2.创建模型 实例:我们来假定下面这些概念,字段和关系 作者模型:一个作者有姓名和年龄.作者详细模型:把作者的详情放到详情表,包含生日,手机号,家庭住址等信息.作者详情模型和作者模型之间是一对一的关系(

django模型层2 多表操作

1.多表操作: 1.创建模型: 实例:我们来假定下面这些概念,字段和关系 作者模型:一个作者有姓名和年龄. 作者详细模型:把作者的详情放到详情表,包含生日,手机号,家庭住址等信息.作者详情模型和作者模型之间是一对一的关系(one-to-one) 出版商模型:出版商有名称,所在城市以及email. 书籍模型: 书籍有书名和出版日期,一本书可能会有多个作者,一个作者也可以写多本书,所以作者和书籍的关系就是多对多的关联关系(many-to-many);一本书只应该由一个出版商出版,所以出版商和书籍是一

Django学习手册 - ORM 数据表操作

queryset 数据类型介绍 QuerySet与惰性机制 所谓惰性机制:表名.objects.all()或者.filter()等都只是返回了一个QuerySet(查询结果集对象),它并不会马上执行sql,而是当调用QuerySet的时候才执行. QuerySet特点: <1>  可迭代的 <2>  可切片 <3>  惰性计算和缓存机制 例: info=models.table_name.objects.all()[0:5] #切片 info= models.table