django-models 数据库取值
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 数据库取值的更多相关文章
- django models 数据库操作
django models 数据库操作 创建模型 实例代码如下 from django.db import models class School(models.Model): pass class ...
- locust参数化(数据库取值)
locust参数化(数据库取值) 基于上一篇参数化的梳理,本篇用另一种方法从数据库中取出这100个用户来登录 思路:在 TaskSet 中的 on_start 方法表示执行任务前的操作,可以将数据库取 ...
- 与Mysqli相关的四种数据库取值
<!--取值方案一:通过数字数组 fetch_row()--><meta http-equiv="Content-Type" content="text ...
- django models数据库操作
一.数据库操作 1.创建model表 基本结构 1 2 3 4 5 6 from django.db import models class userinfo(models.M ...
- Django models数据库配置以及多数据库联用设置
今天来说说web框架Django怎么配置使用数据库,也就是传说中MVC(Model View Controller)中的M,Model(模型). 简单介绍一下Django中的MVC: 模型(model ...
- Django models数据库配置以及多数据库调用设置
今天来说说web框架Django怎么配置使用数据库,也就是传说中MVC(Model View Controller)中的M,Model(模型). 简单介绍一下Django中的MVC: 模型(model ...
- java 从数据库取值反射给变量
在 javaweb开发中,往往一些通用的属性都定义到常量类中,而常量类中的常量又怎么赋初始值呢,可以再配置文件,可以直接赋值,可以在webstart的时候从数据库查询出来数据赋值 从数据库查询数据出来 ...
- multiple类型的select option在django后台如何取值
之前前端的select都是单选类型,在新的场景中允许用户选择多个条件, 前端的代码如下: <form action="{% url 'info:result-list' %}" ...
- 记一次 PHP 省市县三级联动 数据库取值
/** * Notes:省市县三级联动 * Created by depressiom * Date: 2022年4月14日 */ public function getCityData(){ //获 ...
随机推荐
- QT的QCombox
https://stackoverflow.com/questions/29939990/qcombobox-style-for-choosed-item-in-drop-down-list
- XML布局之路
XML布局存放在工程文件的res/layout目录下.安卓和PC端的界面布局有用到. 常用的布局方式,线性布局:LinearLayout 表格布局:TableLayout 帧布局 :FrameLay ...
- 设计模式:组合(Composite)模式
设计模式:组合(Composite)模式 一.前言 关于Composite模式,其实就是组合模式,又叫部分整体模式,这个模式在我们的生活中也经常使用,比如说如果读者有使用Java的GUI编写过程序 ...
- 容器,Docker, Kubernetes和Kyma,以及Kyma对SAP的意义
大家好,今天非常高兴能给大家做一个关于Kyma的技术分享.这个session的audience主要是针对使用咱们成都研究院使用Java和nodejs等技术栈做微服务开发的同事们.对于在ABAP net ...
- java动态代理的实现以及原理
1.前言 之前对动态代理的技术只是表面上理解,没有形成一个体系,这里总结一下,整个动态代理的实现以及实现原理,以表述的更清楚一些. 2.动态代理的实现应用到的技术 1.动态编译技术,可以使用Java自 ...
- 六.安装jdk(基于Centos7安装)
1.我把java安装到/usr/local/jdk目录下面,所以,新建文件夹如下 2.把下载到的文件上传至Linux服务器 笔者使用wget命令直接把文件下载到服务器"wget http:/ ...
- UVa 753 - A Plug for UNIX(最大流)
链接: https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem& ...
- PHP中使用substr()截取字符串出现中文乱码问题该怎么办
一.使用mbstring扩展库的mb_substr()截取就不会出现乱码了. 可以用mb_substr()/mb_strcut()这个函数,mb_substr()/mb_strcut()的用法与sub ...
- Tree - Rooted Trees
Rooted Trees A graph G = (V, E) is a data structure where V is a finite set of vertices and E is a b ...
- 快速了解jquery
jQuery的基本设计思想和主要用法,就是"选择某个网页元素,然后对其进行某种操作".这是它区别于其他Javascript库的根本特点. 所以jquery的基础语法是: $(sel ...