用插件做的炫酷网站,.网站建设的基本步骤,wordpress 多域名登陆,wordpress 后端单表操作
django 自带的sqlite3数据库对日期格式不是很敏感#xff0c;处理的时候容易出错。 测试脚本
测试环境准备#xff1a;去manage.py 中拷贝钱四行代码#xff0c;然后自己手写两行。
脚本无论在引用下面#xff0c;还是单独开设PY文件都可以。
import os
impor…单表操作
django 自带的sqlite3数据库对日期格式不是很敏感处理的时候容易出错。 测试脚本
测试环境准备去manage.py 中拷贝钱四行代码然后自己手写两行。
脚本无论在引用下面还是单独开设PY文件都可以。
import os
import sysif __name__ __main__:os.environ.setdefault(DJANGO_SETTINGS_MODULE, mysiteday62.settings)#手写2行import djangodjango.setup()#所有代码都必须在下面包括import命令from app01 import models#不需要迁移命令#增user_objmodels.User(usernameusername,passwordpassword)User_obj.save() #保存数据#删除 models.Book.objects.filter(pk2).delete()#pk会自动查找当前表的主键字段#用了PK不需要查看主键字段名字 uid pid sid...#第二种usr_objmodels.Book.objects.filter(pk2)usr_obj.delete()#修改#get 不推荐没有数值会报错edit_book_obj models.Book.objects.get(pkedit_id)#推荐models.Book.objects.filter(pkedit_id).update(book_titlenew_title ,publishernew_publisher_id ) 必知的13条
1.all()
2.filter() 可以主键用pk替代
3.get() 直接拿数据但条件不存在会报错。
4.first()
5.last()6.values() #指定获取的数据的字段。返回结果列表套字典resmodels.User.objects.values(name,age)7. values_list() #返回列表套元组res.query 查看sql语句方式只有queryset对象才行8.distinct() 去重复有主键不能去除一定要一模一样的数据一定不要忽略主键9. order_by()
resmodels.User.objects.order_by(age) 默认升序
resmodels.User.objects.order_by(-age) #降序 加‘-’10. reverse() 反转前提是 数据已经排序,跟在order_by()11. count() #统计个数12. exclude() #排除在外
resmodels.User.objects.exclude(namejason)13. exists() #是否存在返回布尔值. 基本用不到数据包含布尔值。 神器的双下划线查询
#查询小于35岁
resmodels.User.objects.filter(age__lt35)#小于等于
resmodels.User.objects.filter(age__lte30)#年龄18或者32或者40
resmodels.User.objects.filter(age__in[18,32,40])#18到40岁
resmodels.User.objects.filter(age__range[18,40])#名字还有“n”,默认区分大小写resmodels.User.objects.filter(name__containsn)#忽略大小写
resmodels.User.objects.filter(name__icontainsn)#开头结尾
resmodels.User.objects.filter(name__startswithn)
resmodels.User.objects.filter(name__endswithn)#注册时间2020 1月份
resmodels.User.objects.filter(register_time__month1)
resmodels.User.objects.filter(register_time__year2020)ret models.Person.objects.filter(birthday__year2000, birthday__month5) 多表操作
一对多
#增
#1.直接字段 id
models.Books.objects.create(tittlesanguo,price123.23,pblicsh_id1)#2.虚拟字段对象
publish_objmodels.Publish.objects.filter(pk2),first()
models.Books.objects.create(tittlesanguo,price123.23,pblicshpublish_obj)#删除默认级联删了一个另外关联表也删除。
models.Publish.objects.filter(pk1).delete()#修改#1
models.Books.objects.filter(pk1).update(publish_id2)#2
publish_objmodels.Publish.objects.filter(pk2),first()
models.Books.objects.filter(pk1).update(publishpublish_obj)
多对多
# 多对多 增删改查 就是在操作第三张表#book与authors 多对多#-----增--------
book_objmodels.Book.objects.filter(pk1).first()
#主键为1的书籍添加一个主键为1的作者
book_obj.authors.add(1) #因为多对多可以添加多个。
book_obj.authors.add(23) #方法二
author_obj1models.Author.objects.filter(pk1),first()
author_obj2models.Author.objects.filter(pk2),first()
author_obj3models.Author.objects.filter(pk3),first()
book_obj.authors.add(author_obj1,author_obj2,author_obj3) add给第三张表添加数据可以数字也可以对象。#--------删-----------book_obj.authors.remove(2)
book_obj.authors.remove(1,3)#同样支持对象
book_obj.authors.remove(author_obj1,author_obj2)#------------修改-----------book_obj.authors.set([1,3])
book_obj.authors.set([3]) #也支持对象#括号内必须是可迭代对象。#**先删除后新增#-------清空----------#在第三张表清空某个书籍与作者关系book_obj.authors.clear()
#不需要参数。 多表查询
正反向概念
外键字段在book
book-publish 正向
publish-book 反向
口诀
正向查找靠字段 :
反向查找靠小写 结果为多个加_set, . 单个不用
结果为多个的时候需要.all()
子查询基于对象的跨表查询
#1.查询书籍主键为1的出版社
book_objmodels.Book.objects.filter(pk1),first()
#正向
resbook_obj.publish
print(res.name)#2. 查询书籍主键为2的作者
book_objmodels.Book.objects.filter(pk2),first()
#正向
resbook_obj.authors.all() #3. 查询作者jason的电话号码
author_objmodels.Author.objects.filter(namejason).first()
resauthor_obj.author_detail
print(res.phone)什么时候加.all()
结果为多个加.all()#4.查询出版社为东方出版社的书
publish_objmodels.Publis.objects.filter(name东方出版社).first()
#反向, 表名小写 加_set
respublish_obj.book_set.all()#5. 查询作者为jason的书
author_objmodels.Author.objects.filter(namejason)
resauthor_obj.book_set.all()
print(res)#6. 查询手机号为110的作者姓名
author_detail_objmodels.AuthorDetail.objects.filter(phone110).first()
resauther_detail_obj.author
print(res.name)#***但结果为单个就不用_set 基于双下划线跨表查询
#1.查询jason的手机号和名字
resmodels.Author.objects.filter(namejason).values(author_detail__phone,name)#反向
resmodels.AuthorDetail.objects.filter(author__namejason).values(phone,author__name)#2. 查询主键为1的出版社名字和书的名字
resmodels.Book.objects.filter(pk1).values(title,publish__name) #表名小写
#反向
resmodels.Publish.objects.filter(book__id1).valus(name,book__title)#3. 查询书籍主键为1的作者姓名
resmodels.Book.objects.filter(pk1).value(authors__name)
resmodels.Author.objects.filter(book__id1),values(name)#4. 书籍主键1的作者的手机号
resmodels.Book.objects.filter(pk1),values(authors__author_detail__phone)