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 ...
随机推荐
- Modifying namespace in XML document programmatically
Modifying namespace in XML document programmatically static XElement stripNS(XElement root) { return ...
- JavaWeb学习 (九)————HttpServletRequest对象(一)
一.HttpServletRequest介绍 HttpServletRequest对象代表客户端的请求,当客户端通过HTTP协议访问服务器时,HTTP请求头中的所有信息都封装在这个对象中,通过这个对象 ...
- 【转载】To the Virgins, to Make Much of Time
Gather ye rosebuds while ye may Old Time is still a-flying And this same flower that smiles today To ...
- ext js 4.0 grid表格根据列值的不同给行设置不同的背景颜色
Code: Ext.create('Ext.grid.Panel', { ... viewConfig: { getRowClass: function(record) { return record ...
- ASP.NET新增数据返回自增ID
一.情景引入 项目需求:对于一个数据表(表A)的增.删.改全部要有日志记录,日志表(表B)结构 中需要记录表A的自增ID,这样才能将日志与操作的数据一一对应起来. 对于删和改都好办,获取Model时都 ...
- Java中构造方法与setter方法
今天在重温Java的同时,一个不是问题的问题,突然地冒出来,不知道大家是不是和我一样,也有过这个比较尴尬的问题 不啰嗦了,那咱就直接说问题吧~~~ 那么首先我们在Java中都会写构造函数,目的是在 ...
- php编程规范整理
该规范对其他语言,部分是通用的标准....好吧,废话不多说啦,直入正题: 1.PHP 编程规范与编码习惯最主要的有以下几点: 1 文件说明 2 function 函数体说明 3 代码缩进 4 if省略 ...
- tomcat8 manager页面限制IP访问
tomcat8 manager页面限制IP访问 配置tomcat8/webapps/manager/META-INF/context.xml <Context antiResourceLocki ...
- (三)Sass和Compass--制作精灵图片
6.1 精灵的工作原理 // 将各种图片合并到一张图片里面,并在不同的状态下改变背景图片的位置; 6.2 精灵的重要性 // 压缩图片的内存; // 减少HTTP请求 6.2.3 Compass处理精 ...
- Android ContentProvider数据共享
一.构造一个自己的Provider实现App之间数据共享 1.我们先来了解一下 Uri(统一资源定位符) 定义:每一个Content Provider使用一个公开的URI唯一标示其数据集,Andr ...