Django之数据表增删改查
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之数据表增删改查的更多相关文章
- Django图书管理系统(前端对有外键的数据表增删改查)
图书管理 书籍管理 book name 项目源码位置:https://gitee.com/machangwei-8/learning_materials/tree/master/%E9%A1%B9%E ...
- mysql数据表增删改查
http://www.runoob.com/mysql/mysql-tutorial.html 一.MySQL 创建数据表 创建MySQL数据表需要以下信息: 表名 表字段名 定义每个表字段 语法 以 ...
- mysql 数据表 增删改查
用户操作: mysql -u root -p 登录root用户: SHOW DATABASES; 显示所有的数据库名称: USE linuxcast; 切入linuxcast数据库: CREATE T ...
- mysql详解常用命令操作,利用SQL语句创建数据表—增删改查
关系型数据库的核心内容是 关系 即 二维表 MYSQL的启动和连接show variables; [所有的变量] 1服务端启动 查看服务状态 sudo /etc/init.d/mysql status ...
- Django框架之第二篇--app注册、静态文件配置、form表单提交、pycharm连接数据库、django使用mysql数据库、表字段的增删改查、表数据的增删改查
本节知识点大致为:静态文件配置.form表单提交数据后端如何获取.request方法.pycharm连接数据库,django使用mysql数据库.表字段的增删改查.表数据的增删改查 一.创建app,创 ...
- Django 06 Django模型基础1(ORM简介、数据库连接配置、模型的创建与映射、数据的增删改查)
Django 06 Django模型基础1(ORM简介.数据库连接配置.模型的创建与映射.数据的增删改查) 一.ORM系统 #django模型映射关系 #模型类-----数据表 #类属性-----表字 ...
- Django框架(八)--单表增删改查,在Python脚本中调用Django环境
一.数据库连接配置 如果连接的是pycharm默认的Sqlite,不用改动,使用默认配置即可 如果连接mysql,需要在配置文件中的setting中进行配置: 将DATABASES={} 更新为 DA ...
- Django框架(九)—— 单表增删改查,在Python脚本中调用Django环境
目录 单表增删改查,在Python脚本中调用Django环境 一.数据库连接配置 二.orm创建表和字段 三.单表增删改查 1.增加数据 2.删除数据 3.修改数据 4.查询数据 四.在Python脚 ...
- django学习-12.访问不同url/接口地址实现对指定数据的增删改查功能
1.前言 通过前面博客[django学习-10.django连接mysql数据库和创建数据表]里的操作,我们已经成功在数据库[hongjingsheng_project]里创建了一张数据表[hello ...
随机推荐
- SpringMVC教程1
一.SpringMVC介绍 1.MVC介绍 ==模型-视图-控制器(MVC== 是一个众所周知的以设计界面应用程序为基础的设计模式.它主要通过分离模型.视图及控制器在应用程序中的角色将业务逻辑从界面中 ...
- [转]Building a REST-Backend for Angular with Node.js & Express
本文转自:https://malcoded.com/posts/angular-backend-express Angular is a single page application framewo ...
- jquery实现文本框click清空文本内容
原先的样子 点击之后 如果没有输入内容则还原 否则为最新输入 实现代码 test.html <script src="https://code.jquery.com/jquery-3. ...
- DotNetCore学习-2.程序启动
新创建的ASP.NET Core程序中包含两个文件,分别是Program.Startup.其中,Program中Main方法是整个应用程序的入口,该方法如下: var host = WebHost.C ...
- WINAPI实现简易扫雷游戏
//扫雷 #include <windows.h> #include <windowsx.h> #include <strsafe.h> #include < ...
- Jquery Ajax 调用后台并返回数据
一.前台调用ajax并解析json对象. $.ajax({ url : '', type : 'POST', //GET data : '’, beforeSend : function(reques ...
- How does this enqueue function work?
Question: I'm having trouble understanding this line: rear->next = temp; in this queue function: ...
- JS如何判断一个数组是否为空、是否含有某个值
一.js判断数组是否为空 方法一: arr.length let arr = []; if (arr.length == 0){ console.log("数组为空") }els ...
- Java 初级软件工程师 认证考试试卷1
Java 初级软件工程师 认证考试试卷 笔试(A卷) 考试时间150分钟 总分 100分 姓 名_______________________ 身份证号_____________ ...
- 消息队列&Celery&RabbitMQ&zeromq
一.消息队列 什么是消息队列? “消息队列”是在消息的传输过程中保存消息的容器. “消息”是在两台计算机间传送的数据单位.消息可以非常简单,例如只包含文本字符串:也可以更复杂,可能包含嵌入对象. 消息 ...