django.shortcuts import render,HttpResponse
from app01.models import *
# Create your views here. def index(request):
return render(request,"index.html") def addbook(request):
# 一对多的添加 # 第一种方式
# Book.objects.create(name="Linux运维",price=1133,pub_date="2017-11-22",publish_id=2) # 第二种添加方式 publish_id,没办法添加publish_obj
# publish_obj=Publish.objects.filter(name="人民出版社")[0]
# print("+++!!!****",publish_obj)
# +++!!!**** Publish object (1)
# print(type(publish_obj))
# <class 'app01.models.Publish'> # Book.objects.create(name="GO语言", price=43, pub_date="2017-07-17", publish_id=2)
# INSERT INTO `app01_book` (`name`, `price`, `pub_date`, `publis
# h_id`) VALUES ('GO语言', 43, '2017-07-17', 2); args=['GO语言', 43, '20
# 17-07-17', 2] # 拿到数据库里面的表的值,有两步,先拿到值,再赋给对象
# 再从里面取值
# 先拿到book表,取到name=python的值,再赋给对象
# 如果是两个值,会报错,get只能得到一个值
# book_obj=Book.objects.get(name='python')
#
# print("----",book_obj) # 一对多:book_obj.publish------一定是一个对象
# 如果是要取外键的表的值,取publish会取到一个publish对象
# print(type(book_obj.publish))
# print(book_obj.publish.name)
# print(book_obj.publish.city) # 从子表去找主表
# 要拿到表中外键的表的值,步骤有
# 先拿到publish表是name的值等于机械出版社的一整行对象pub_obj(表中有id,name,city)
# SELECT `app01_publish`.`id`, `app01_publish`.`name`, `app01_pu
# blish`.`city` FROM `app01_publish` WHERE `app01_publish`.`name` = '机
# 械出版社'; args=('机械出版社',)
# 把pub_obj结果赋值给publish,由id作为查找依据,再从book表中找到要查询的name跟price
# SELECT `app01_book`.`name`, `app01_book`.`price` FROM `app01_b
# ook` WHERE `app01_book`.`publish_id` = 4 LIMIT 21; args=(4,) # get查找方式:表.objects.get()--只能有一个对象
# pub_obj=Publish.objects.get(name='机械出版社') # filter查找方式:表.objects.filter()[0]--是对象的集
# pub_obj2=Publish.objects.filter(name="山西出版社")[0]
# print(pub_obj)
# Publish object (4) # print(pub_obj.city)
# 上海
# print(pub_obj.id)
# # 关键点:把publish表的对象放进filter里面筛选,再从里面values取值
# ret=Book.objects.filter(publish=pub_obj).values("name","price")
# ret2=Book.objects.filter(publish=pub_obj2).values("name","pub_date") # print(ret)
# print(ret2)
# 机械出版社出版的书籍跟价格---query对象
# <QuerySet [{'name': 'Java', 'price': 65}, {'name': 'Linux开发', 'price
# ': 1133}, {'name': 'Linux系统', 'price': 133}, {'name': 'Linux服务器',
# 'price': 133}]> # 从主表再去找子表
# ,第一步相同,从publish表找到name等于南方出版社,赋值给pub_obj
pub_obj = Publish.objects.filter(name='山西出版社')[0]
# 再从pub_obj里面找到book_set.all()(book子表的所有内容) 是一个对象集合 # publish表拿到了book表的对象,表名+单引号,得到了表名里面的queryset对象.all()的所有值,
# book_set.all(),再从里面values取值
print(pub_obj.book_set.all())
# <QuerySet [<Book: Django>, <Book: Linux运维>, <Book: sqlyog>, <Book: Linux代码>, <Book: GO语言>, <Book: GO语言>, <Book: GO语言>, <Book: moring>]> print(pub_obj.book_set.all().values("name",'price'))
# <QuerySet [{'name': 'Django', 'price': 45}, {'name': 'Linux运维', 'pri
# ce': 1133}, {'name': 'sqlyog', 'price': 1133}, {'name': 'Linux代码', '
# price': 133}, {'name': 'GO语言', 'price': 43}, {'name': 'GO语言', 'pri
# ce': 43}, {'name': 'GO语言', 'price': 43}, {'name': 'moring', 'price':
# 23}]> # 更简便的第3种方式:
ret=Book.objects.filter()

django-models 数据库取值的更多相关文章

  1. django models 数据库操作

    django models 数据库操作 创建模型 实例代码如下 from django.db import models class School(models.Model): pass class ...

  2. locust参数化(数据库取值)

    locust参数化(数据库取值) 基于上一篇参数化的梳理,本篇用另一种方法从数据库中取出这100个用户来登录 思路:在 TaskSet 中的 on_start 方法表示执行任务前的操作,可以将数据库取 ...

  3. 与Mysqli相关的四种数据库取值

    <!--取值方案一:通过数字数组 fetch_row()--><meta http-equiv="Content-Type" content="text ...

  4. django models数据库操作

    一.数据库操作 1.创建model表         基本结构 1 2 3 4 5 6 from django.db import models     class userinfo(models.M ...

  5. Django models数据库配置以及多数据库联用设置

    今天来说说web框架Django怎么配置使用数据库,也就是传说中MVC(Model View Controller)中的M,Model(模型). 简单介绍一下Django中的MVC: 模型(model ...

  6. Django models数据库配置以及多数据库调用设置

    今天来说说web框架Django怎么配置使用数据库,也就是传说中MVC(Model View Controller)中的M,Model(模型). 简单介绍一下Django中的MVC: 模型(model ...

  7. java 从数据库取值反射给变量

    在 javaweb开发中,往往一些通用的属性都定义到常量类中,而常量类中的常量又怎么赋初始值呢,可以再配置文件,可以直接赋值,可以在webstart的时候从数据库查询出来数据赋值 从数据库查询数据出来 ...

  8. multiple类型的select option在django后台如何取值

    之前前端的select都是单选类型,在新的场景中允许用户选择多个条件, 前端的代码如下: <form action="{% url 'info:result-list' %}" ...

  9. 记一次 PHP 省市县三级联动 数据库取值

    /** * Notes:省市县三级联动 * Created by depressiom * Date: 2022年4月14日 */ public function getCityData(){ //获 ...

随机推荐

  1. Useful WCF Behaviors - IErrorHandler

    Behaviors in WCF are so stinking useful, and once you get past the basics of WCF they're arguably a ...

  2. openvpn(上)

    VPN概述:(全称Virtual Private Network)虚拟专用网络,是依靠ISP和其他的NSP,在公网中建立专用的数据通信网络的技术,可以为企业之间或者个人与企业之间提供安全的数据传输隧道 ...

  3. 【深入理解JAVA虚拟机】第二部分.内存自动管理机制.2.HotSpot虚拟机对象探秘

    对象的创建过程 1.加载类 虚拟机遇到一条new指令时,首先将去检查这个指令的参数是否能在常量池中定位到一个类的符号引用,并且检查这个符号引用代表的类是否已被加载. 解析和初始化过. 如果没有,那必须 ...

  4. 优秀 Java 程序员写代码的风格,不再留坑给别人

    往 期 精 彩 推 荐    [1]Java Web技术经验总结 [2]15个顶级Java多线程面试题及答案,快来看看吧 [3]面试官最喜欢问的十道java面试题 [4]从零讲JAVA ,给你一条清晰 ...

  5. jsp和servlet的问题收集.... 答案有部分是自己理解的,可能有点差异

    如何创建一个动态工程? File ---->  New ---->other ---->Web ---->Dynamic Web Project  选择动态WEB 项目工程 W ...

  6. Python函数式编程(进阶2)

    转载请标明出处: http://www.cnblogs.com/why168888/p/6411915.html 本文出自:[Edwin博客园] Python函数式编程(进阶2) 1. python把 ...

  7. 使用ViewPager和FragmentPagerAdapter实现Tab

    前面我们分别利用ViewPager和Fragment实现了Tab效果.但是使用Fragment实现的Tab不能够左右滑动.如果我们既想使用Fragment又想让Tab能够滑动,那么怎么办呢?这 就是今 ...

  8. STL - next_permutation 全排列函数

    学习: http://blog.sina.com.cn/s/blog_9f7ea4390101101u.html http://blog.csdn.net/ac_gibson/article/deta ...

  9. Java之生成Pdf并对Pdf内容操作

    虽说网上有很多可以在线导出Pdf或者word或者转成png等格式的工具,但是我觉得还是得了解知道是怎么实现的.一来,在线免费转换工具,是有容量限制的,达到一定的容量时,是不能成功导出的;二来,业务需求 ...

  10. linux下构建SVN

    1. 安装subversion#yum -y install subversion2. 安装好了之后 新建一个svn目录#mkdir /home/svn3. 新建两个版本仓库#svnadmin cre ...