django 3,django笔记

  django 3,django笔记

  学习笔记,仅供参考。

  本文以目录数据表关联映射一对多映射外键关联外键构造函数为例。

  数据表关联映射

  一对多映射

  一对多是指现实事物之间的一对多对应关系。比如一个学生只能属于一个班级,一个班级可以有多个学生;一本书只能属于一家出版社,一家出版社允许多本书出版。

  语法一个类对象可以与多个B类对象相关联。

  A级(型号。型号):

  及格

  B级(型号。型号):

  属性=模型。ForeignKey(模型类,)

  关联外键外键

  构造了外键的参数on_delete(to,on _ delete,* * options)。

  模特。串联

  #级联删除。如果设置了该参数值,当主对象被删除时,其关联的从属对象将被同时删除。

  模特。保护

  #如果我们在主对象有关联对象时删除它,我们将抛出一个ProtectedError来阻止它被删除;

  SET_NULL

  #当主对象被删除时,从对象指向null。

  设置默认值

  #将ForeignKey设置为其默认值;必须设置ForeignKey的默认值。

  * *选项是常用的字段选项。

  空

  独一无二的

  #等待

  例如

  定义一对多模型. py

  从django.db导入模型

  #在此创建您的模型。

  类发行者(模型。型号):

  名称=型号。CharField(出版社名称,max_length=50,null=True)

  图书编号=models.positiveintgerfield(第一版图书的总数,默认值=0)

  Tele=模型。CharField(联系号码,max_length=11,null=False)

  类别元:

  db_table=china_publisher

  verbose_name=ChinaPublisher

  verbose _ name _ plural= China publishers

  def __str__(self):

  String=发布者:%s% (self.name)

  返回字符串

  课堂用书(模型。型号):

  标题=模型。CharField (title ,max_length=30)

  ExfacPrice=型号。DecimalField(出厂价),

  max_digits=6,decimal_places=2

  默认值=0)

  价格=车型。DecimalField(售价),

  max_digits=6,decimal_places=2

  默认值=0)

  pub=模特。ForeignKey(Publisher,on_delete=models。级联,空=真)

  def __str__(self):

  String=图书标题:%s% (self.title)

  返回字符串

  创建一个一对多对象来打开Django shell,并键入以下代码:

  从书店导入模型

  1=models . publisher . objects . create(name=中国人民大学出版社,tele= 62511329 ,书号=22000)

  models . book . objects . create(title= statistics ,pub=pub1)

  models . book . objects . create(title=多元统计分析,pub=pub1)

  models . book . objects . create(title=回归分析,pub=pub1)

  2=models . publisher . objects . create(name=高等教育出版社,tele= 82080802 ,书号=12000)

  models . book . objects . create(title=数学分析,pub=pub2)

  models . book . objects . create(title=高等代数,pub=pub2)

  通过查询再检查一个:

  #通过一本书找到相应的出版社

  abok=models . book . objects . get(title= statistics )

  print(abook.title,)的出版者是:,abook.pub.name)输出:

  in[2]:abook=models . book . objects . get(title= statistics )

  .print(abook . title 的出版商是:,abook.pub.name)

  .

  统计的出版社是:中国人民大学出版社,通过调查:

  #通过出版社查询对应的书。

  1=models . publisher . objects . get(name=中国人民大学出版社)

  books=pub1.book_set.all()

  #通过book_set获取pub1对应的多个Book对象

  #相当于

  #书籍=模型。Book.objects.filter(pub=pub1)

  打印(清华大学出版社的书是:)

  对于书中的书:

  打印(book.title)输出:

  在[3]: #通过出版社查对应的书。

  .pub 1=models . publisher . objects . get(name=中国人民大学出版社)

  .books=pub1.book_set.all()

  .#通过book_set获取pub1对应的多个Book对象

  .#相当于

  .#书籍=模型。Book.objects.filter(pub=pub1)

  .print(清华大学出版社的书有:)

  .对于书中的书:

  .打印(book.title)

  .

  清华大学的书有:

  统计数字

  多元统计分析

  回归分析

  我们来看看mywebdb数据库中的china_publisher数据表:

  MySQL select * from China _ publisher;

  - - - -

   id 姓名书号电话

  - - - -

   1 中国人民大学出版社 22000 62511329

  2 高等教育出版社 12000 82080802

  - - - -

  集合中的2行(0.00秒)

  再次查看mywebdb数据库中的bookstore_book数据表:

  MySQL select * from book store _ book;

  - - - - -

   id title ex fac price price pub _ id

  - - - - -

   1 Djangoweb开发实践 0.00 0.00 NULL

   2 python 0.00 0.00 NULL

   3 R 0.00 0.00 NULL

   5 算法 0.00 0.00 NULL

   6 集体智能编程 0.00 0.00 NULL

   8 统计 0.00 0.00 1

   9 多元统计分析 0.00 1.00 0.00

   10 回归分析 0.00 0.00 1

   11 数学分析 0.00 0.00 2

   12 高等代数 0.00 0.00 2

  - - - - -

  set中的10行(0.01秒)book store _ book数据表的pub_id字段与china_publisher数据表中的id字段相关联,因此pub_id=1表示中国人民大学出版社,pub_id=2表示高等教育出版社。

  最后我们启动了服务,向http://127 . 0 . 0 . 1:8000/admin/book/提出了请求

  点击高等代数:

  大家可以看到,在《高等代数》的记录中,pub默认是高等教育出版社,但是它有一个可选框,我们可以在中国人民大学出版社和高等教育出版社之间选择。

  现在,我们把高等代数出版社改为中国人民大学出版社,点击保存。

  现在,请查看我们的书店_图书数据表:

  MySQL select * from book store _ book;

  - - - - -

   id title ex fac price price pub _ id

  - - - - -

   1 Djangoweb开发实践 0.00 0.00 NULL

   2 python 0.00 0.00 NULL

   3 R 0.00 0.00 NULL

   5 算法 0.00 0.00 NULL

   6 集体智能编程 0.00 0.00 NULL

   8 统计 0.00 0.00 1

   9 多元统计分析 0.00 1.00 0.00

   10 回归分析 0.00 0.00 1

   11 数学分析 0.00 0.00 2

   12 高等代数 0.00 0.00 1

  - - - - -

  集合中的10行(0.00秒)非常好!记录已被更新!

  转载请联系作者获得转载授权,否则将追究法律责任。

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: