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. c#编程指南(五) 扩展方法(Extension Method)

    C# 3.0就引入的新特性,扩展方法可以很大的增加你代码的优美度,扩展方法提供你扩展.NET Framewoke类的扩展途径,书写和规则也简单的要命. 编写扩展方法有下面几个要求: 第一:扩展方法所在 ...

  2. 错误: 安装必备组件失败: 安装必备组件失败: SqlInstanceRtc 有关详细信息

    错误: 安装必备组件失败: 安装必备组件失败: SqlInstanceRtc 有关详细信息 查看错误得知是安装sqlexpr_x64.exe的时候出现了错误 解决: 通过打开skype镜像,找到sql ...

  3. ZT 设计模式六大原则(5):迪米特法则

    转贴: 设计模式六大原则(5):迪米特法则   原帖子的后续评论里面很多值得仔细去看 切记!像21楼 21楼 chenshufei2 2012-09-23 12:47发表 [回复] 上个例子,就是方法 ...

  4. WEB开发的jsp例子标签库(jstl)的使用

    <!-- e1 --> <%@ page language="java" contentType="text/html; charset=UTF-8&q ...

  5. SkyWalking 为.NET Core

    SkyWalking 为.NET Core https://www.cnblogs.com/liuhaoyang/p/skywalking-dotnet-v02-release.html Apache ...

  6. SecurityError: The operation is insecure.(js不安全操作)

    今天突然就遇上了这样的情况,本来在出错的这一行的后面,还有要执行的语句,都没有办法执行,真实坑爹,而最要命的事情,这样的情况,在我的chrome浏览器里没有,但是在firefox里就会出现. The ...

  7. sqlite3如何退出...>状态

    一般是进入SQL数据语言模式了,此时要想退出...>状态,只要输入一条完整的SQL语句就行了,也就是末尾要加上:(分号)这个符号就可以退回到sqlite>状态

  8. 【剑指offer】字符串的组合

    版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/mmc_maodun/article/details/26405471 转载请注明出处:http:// ...

  9. BZOJ3238:[AHOI2013]差异(SAM)

    Description Input 一行,一个字符串S Output 一行,一个整数,表示所求值 Sample Input cacao Sample Output 54 HINT 2<=N< ...

  10. es6之数组方法

    //兼容插件 babel-polyfill values()等存在兼容问题,需要加载babel-polyfill插件 .keys()  获取数组的key值 .values()  获取数组的value值 ...