Django数据增删改查:

上课代码

from django.shortcuts import render,HttpResponse

# Create your views here.
from app01 import models def addBook(request): # 一对多的添加
# 方式1
#models.Book.objects.create(title="python",price=100,publishDate="2017-12-12",publish_id=1)//这是规定传值 # 方式2
# pubObj=models.Publish.objects.filter(name="人民出版社")[0]
# models.Book.objects.create(title="python2",price=120,publishDate="2017-10-12",publish=pubObj) # 关联的出版社对象这个比较灵活 # 多对多的添加
#book_obj=models.Book.objects.create(title="红楼梦", price=100, publishDate="2017-12-12", publish_id=2) # alex_obj=models.Author.objects.filter(name="alex")[0]
# egon_obj=models.Author.objects.filter(name="egon")[0]
# egon_obj=models.Author.objects.filter(name="yuan")[0]
# print("======",book_obj.authorlist) # []
#
# authorList=models.Author.objects.all()
#
#
# # 绑定多对多的关系
#
# #book_obj.authorlist.add(alex_obj,egon_obj) # [alex_obj,egon_obj]#这个是添加可以列举的作者
# book_obj.authorlist.add(*authorList) # [alex_obj,egon_obj]#这个是添加不可列举的 # 解除多对多的关系 # book_obj=models.Book.objects.filter(title="红楼梦").first()
# authorList=models.Author.objects.filter(id__lt=3)
# print(book_obj.authorlist.remove(*authorList))#解除多对多关系的 # 清除关系方法
# book_obj = models.Book.objects.filter(title="红楼梦").first()
# book_obj.authorlist.clear()这是清除关系的
return HttpResponse("OK")
def query(request):
# 一对多的查询
# 查询linux这本书的出版社的地址? # linux_obj=models.Book.objects.filter(title="linux").first()#查出的是一个对象
#
# print(linux_obj.title)
# print(linux_obj.price)
# print(linux_obj.publishDate)
#
# print(linux_obj.publish.name) # 与这本书对象关联的出版社对象直接点就行了
# print(linux_obj.publish.addr) # 与这本书对象关联的出版社对象 # 人民出版社出版过的书籍的名字
# publish_obj=models.Publish.objects.filter(name="人民出版社")[0]
# print(publish_obj.bookList.all()) # 与这个出版社对象关联的所有书籍对象 # 多对多的查询 # 查询追风筝的人的所有作者的姓名和年龄 # book_obj=models.Book.objects.filter(title="追风筝的人")[0]
# print("=====",book_obj.authorlist.all() ) # 与这本书关联的所有作者对象,集合对象
# authorlist=book_obj.authorlist.all()#这个是多个的就用.all()
# print(authorlist.values("name","age")) # 查询yuan出版过的所有书籍的名字和价格 #author_yuan=models.Author.objects.get(name="yuan") #print(author_yuan.book_set.all()) # 与这个作者关联的所有书籍对象
#print(author_yuan.bookList.all().values("title","price"))
   # 反向查找(一对多)
# publish_obj = models.Publish.objects.filter(name="人民出版社")[0]
# print(publish_obj.book_set.all().values("title","price"))#反向查找找到的是一个集合
#多对多反向查询(多对多)
# author_obj=models.Author.objects.filter(name="frank").first()
#print(author_obj.book_set.all().values("title","price"))

    # 一对一关系查询

    # 正向查询

    # 查询手机号为456的作者的姓名

    detail_obj=models.Author2Detail.objects.filter(tel="").first()
print(detail_obj.author.name)# 与tel="456"的Author2Detail关联的作者对象 # 反向查询
# 查询景丽洋的手机号
author_obj=models.AuthorA.objects.filter(name="景丽洋").first()
print(author_obj.author2detail.tel) #
print(author_obj.abc.tel) # return HttpResponse("OK")
from django.db import models

# Create your models here.

class Book(models.Model):
nid = models.AutoField(primary_key=True)
title = models.CharField(max_length=32)
publishDate = models.DateField()
price = models.DecimalField(max_digits=5, decimal_places=2)
wordNum=models.IntegerField(default=0)#增属性的默认值可以自己设置
readNum=models.IntegerField(default=0)增属性的默认值可以自己设置
publish=models.ForeignKey("Publish",related_name="bookList") authorlist=models.ManyToManyField("Author",related_name="bookList") # 多对多的关系,自动创建关系表 def __str__(self): return self.title class Publish(models.Model):
name = models.CharField(max_length=32)
addr = models.CharField(max_length=32) def __str__(self):
return self.name class Author(models.Model):
name=models.CharField(max_length=32)
age=models.IntegerField()
def __str__(self):
return self.name class AuthorA(models.Model):
name=models.CharField(max_length=32)
age=models.IntegerField() class Author2Detail(models.Model):
tel=models.IntegerField()
addr=models.CharField(max_length=32)
author=models.OneToOneField("AuthorA",related_name="abc") # class Book2Author(models.Model):
# book=models.ForeignKey("Book")
# author=models.ForeignKey("Author")

views

from django.shortcuts import render, HttpResponse
from app01 import models # Create your views here.
def addBook(request):
# pass
#建立一对一的关系 # models.Book.objects.create
# 建立一对多关系
# 方法一
# models.Book.objects.create(title="python", publishDate="1998-10-27", price="233", publish_id=1)
# 方法二
# publish_obj=models.Publish.objects.filter(name="人民出版社").first()#获得是一个集合要变成一个对象
# models.Book.objects.create(title="python", publishDate="1998-10-27", price="233", publish=publish_obj)
# 建立多对多关系
# author_obj1=models.Author.objects.filter(name="frank").first()
# author_obj2=models.Author.objects.filter(name="egon").first()
# book_obj=models.Book.objects.create(title="C", publishDate="1998-10-27", price="233", publish_id=2)
# book_obj.authorlist.add(author_obj1,author_obj2)
#建立多对多的关系最终版本
# book_obj = models.Book.objects.create(title="C", publishDate="1998-10-27", price="233", publish_id=2)
# authorList=models.Author.objects.all()
# book_obj.authorlist.add(*authorList) # 解除关系的
# book_obj=models.Book.objects.filter(title="C#").first()
# author_obj=models.Author.objects.filter(name="frank").first()
# print( book_obj.authorlist.remove(author_obj)) # #清空关系
# book_obj=models.Book.objects.filter(title="C#").first()
# print( book_obj.authorlist.clear())
return HttpResponse("ok") def query(request):
# 正向查询
# 一对多查询
# 查询python的作者
# book_obj=models.Book.objects.filter(title="python")[0]
# print(book_obj.publish.name)
# print(book_obj.publish.addr)
# 多对多查询
# book_obj=models.Book.objects.filter(title="C").first()
# print(book_obj.authorlist.all().values("name","age")) # 反向查找(一对多)
# publish_obj = models.Publish.objects.filter(name="人民出版社")[0]
# print(publish_obj.book_set.all().values("title","price"))#反向查找找到的是一个集合
#多对多反向查询(多对多)
author_obj=models.Author.objects.filter(name="frank").first()
print(author_obj.book_set.all().values("title","price"))
# 一对一关系查询 # 正向查询 # 查询手机号为456的作者的姓名 detail_obj = models.Author2Detail.objects.filter(tel="").first()
print(detail_obj.author.name) # 与tel="456"的Author2Detail关联的作者对象 # 反向查询
# 查询景丽洋的手机号
author_obj = models.AuthorA.objects.filter(name="景丽洋").first()
print(author_obj.author2detail.tel) # 789#反向查询不用加_set
print(author_obj.abc.tel) # return HttpResponse("查到了")

数据增删

models

from django.db import models

# Create your models here.
class Book(models.Model):
nid=models.AutoField(primary_key=True)
title=models.CharField(max_length=32)
publishDate=models.DateField()
price=models.DecimalField(max_digits=5,decimal_places=2)
publish=models.ForeignKey("Publish")
authorlist=models.ManyToManyField("Author")
def __str__(self):
return self.title
class Publish(models.Model):
name=models.CharField(max_length=32)
addr=models.CharField(max_length=32)
def __str__(self):
return self.name
class Author(models.Model):
name=models.CharField(max_length=32)
age=models.IntegerField()
def __str__(self):
return self.name
class AuthorDetail(models.Model):
telphone=models.IntegerField()
addr=models.CharField(max_length=32)
author=models.OneToOneField("Author")
def __str__(self):
return self.addr

models代码

Django之数据表增删改查的更多相关文章

  1. Django图书管理系统(前端对有外键的数据表增删改查)

    图书管理 书籍管理 book name 项目源码位置:https://gitee.com/machangwei-8/learning_materials/tree/master/%E9%A1%B9%E ...

  2. mysql数据表增删改查

    http://www.runoob.com/mysql/mysql-tutorial.html 一.MySQL 创建数据表 创建MySQL数据表需要以下信息: 表名 表字段名 定义每个表字段 语法 以 ...

  3. mysql 数据表 增删改查

    用户操作: mysql -u root -p 登录root用户: SHOW DATABASES; 显示所有的数据库名称: USE linuxcast; 切入linuxcast数据库: CREATE T ...

  4. mysql详解常用命令操作,利用SQL语句创建数据表—增删改查

    关系型数据库的核心内容是 关系 即 二维表 MYSQL的启动和连接show variables; [所有的变量] 1服务端启动 查看服务状态 sudo /etc/init.d/mysql status ...

  5. Django框架之第二篇--app注册、静态文件配置、form表单提交、pycharm连接数据库、django使用mysql数据库、表字段的增删改查、表数据的增删改查

    本节知识点大致为:静态文件配置.form表单提交数据后端如何获取.request方法.pycharm连接数据库,django使用mysql数据库.表字段的增删改查.表数据的增删改查 一.创建app,创 ...

  6. Django 06 Django模型基础1(ORM简介、数据库连接配置、模型的创建与映射、数据的增删改查)

    Django 06 Django模型基础1(ORM简介.数据库连接配置.模型的创建与映射.数据的增删改查) 一.ORM系统 #django模型映射关系 #模型类-----数据表 #类属性-----表字 ...

  7. Django框架(八)--单表增删改查,在Python脚本中调用Django环境

    一.数据库连接配置 如果连接的是pycharm默认的Sqlite,不用改动,使用默认配置即可 如果连接mysql,需要在配置文件中的setting中进行配置: 将DATABASES={} 更新为 DA ...

  8. Django框架(九)—— 单表增删改查,在Python脚本中调用Django环境

    目录 单表增删改查,在Python脚本中调用Django环境 一.数据库连接配置 二.orm创建表和字段 三.单表增删改查 1.增加数据 2.删除数据 3.修改数据 4.查询数据 四.在Python脚 ...

  9. django学习-12.访问不同url/接口地址实现对指定数据的增删改查功能

    1.前言 通过前面博客[django学习-10.django连接mysql数据库和创建数据表]里的操作,我们已经成功在数据库[hongjingsheng_project]里创建了一张数据表[hello ...

随机推荐

  1. (转)eclipse上传项目到码云

    把Eclipse项目上传到码云的步骤: 1.登录码云:新建项目 2.输入项目名: 3.空项目创建成功如下图: 4.右键点击Eclipse的项目,选择“Team”—————->“Share Pro ...

  2. linux nohup

    nohup RAILS_ENV=production bundle exec XXXX & nohup RAILS_ENV=production bundle exec XXXX >/d ...

  3. js a标签 + ajax 多参数穿参

    <span onclick="return haoping('{$row['jv_id']}','1')"> function haoping(id,type){ $. ...

  4. spring boot升级到2.x的坑

    升级到spring boot 2.x后,发现了好多坑,现记录下来. 1.pom文件依赖的变化 1.x中,依赖是这样的: <dependency> <groupId>org.sp ...

  5. 4款开源免费的数据可视化JavaScript库

    概述:交互式数据可视化在很大程度上取决于JavaScript库的任务能力.在这篇文章中,我们将看看四个JavaScript库:D3,InfoVis,Processing.js,和Recline.js. ...

  6. GridView控件的属性、事件

    GridView控件的属性 属性 描述 AllowPaging 指示该控件是否支持分页. AllowSorting 指示该控件是否支持排序. AutoGenerateColumns 指示是否自动地为数 ...

  7. [PHP]算法-最大子数组问题思路

    最大子数组问题,股票价格示例: 1.在最高价格开始向左寻找之前的最低价格 2.在最低价格开始向右寻找之后的最高价格 3.暴力求解法,尝试每队可能的买进和卖出组合,保证卖出在买进之后 key buy s ...

  8. 支持开源,推动Orchard

    希望正在研究果园,和对果园感兴趣的,加入Orchard高级开发群,进行交流和讨论及深入研究Orchard开发,我们致力寻求志同道合推动Orchard发展的屌丝!!! 干净.专注.社区力量的圈子

  9. Python 练习:简单的购物车(二)

    优化了上一个购物车程序:http://www.cnblogs.com/klvchen/p/8577269.html #输入工资salary = input("Please input you ...

  10. 【读书笔记】iOS-深入解剖对等网络

    协议本身是一个运行在UDP之上的定制协议.我所以决定使用一个定制协议很简单.首先,当前这个任务看起来足够简单,因此与尝试改进一个现在协议相比,直接构建一个定制协议更为容易.其次,定制协议可以将开销减少 ...