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. 查询组成员(group)

    查询组成员 $groupname = "groupname" $members = (get-adgroup $groupname -properties member).memb ...

  2. Linux 安装问题

    问题1: root>sudo apt-get install yum 提示: dpkg was interrupted, you must manually run 'sudo dpkg --c ...

  3. gdb可视化工具gdbgui

    gdbgui是一款很强大的gdb可视化工具,基于浏览器调试很方便.后台是python写的,目前使用起来还有些bug,不过已经很满足了. 官网 https://gdbgui.com Github htt ...

  4. 电池容量单位 Wh和 Ah的关系

    电池容量单位,应该是一个能量单位.我认为使用Wh,KWh比较科学. 功率单位是W 能量单位是WH 部分手机.充电宝使用Ah作为单位,需要通过电池输出电压进行单位转换. 转换公式 Ah * 电池输出电压 ...

  5. 026json和pickle,xml模块

    ###json和pickle ##json#dumps()data = #源数据data = json.dumps(data)这时候的data可以写入到文件了#loads()data = f.read ...

  6. (转)浅谈PostgreSQL的索引

    1. 索引的特性 1.1 加快条件的检索的特性 当表数据量越来越大时查询速度会下降,在表的条件字段上使用索引,快速定位到可能满足条件的记录,不需要遍历所有记录. create table t(id i ...

  7. SSH2整合需要jar包解释

    hibernate3.jar, Hibernate的库,必须使用的jar包 antlr-2.7.6.jar, 语法分析生成器 语言转换工具,hibernate利用它实现HQL到SQL的转换 cglib ...

  8. 大素数测试的Miller-Rabin算法

    Miller-Rabin算法本质上是一种概率算法,存在误判的可能性,但是出错的概率非常小.出错的概率到底是多少,存在严格的理论推导. 一.费马小定理 假如p是质数,且gcd(a,p)=1,那么 a(p ...

  9. Selenium基础知识(元素定位的调试)

    对一个不能直接定位的元素来说,调试是很常见的事,所以这里也简单总结了一下. 调试定位元素的工具很多,介绍也多,就不一一介绍了.下次有时间再补充.以下是我常用调试的方法(浏览器自带的控制台调试,仅介绍一 ...

  10. win7 xampp php7 yii2 配置sqlserver

    第一步: https://www.microsoft.com/en-us/download/details.aspx?id=20098   下载  如下图   php7 版本 放到 xampp\php ...