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. js 数据格式化

    //金额增加千分号formatPrice(123456.78) = 123,456.78 function formatPrice(val) { var parts = val.toString(). ...

  2. 【Leetcode】【Medium】Letter Combinations of a Phone Number

    Given a digit string, return all possible letter combinations that the number could represent. A map ...

  3. 字符串模式匹配之KMP算法的next数组详解与C++实现

    相信来看next数组如何求解的童鞋已经对KMP算法是怎么回事有了一定的了解,这里就不再赘述,附上一个链接吧:https://www.cnblogs.com/c-cloud/p/3224788.html ...

  4. 浅析tnsping

    首先,先弄清楚tnsping是什么: Oracle Net 工具(命令)tnsping,是一个OSI会话层的工具,测试数据库服务的命令,用来决定是否一个Oracle Net 网络服务(service) ...

  5. Win10安装msi程序报错2503和2502错误解决方案

    刚升级了系统到win10,重新搭建开发环境,在安装scala的时候一直报2503.2502错误,如图 试了好几种办法都不好使,现在罗列依次用到的三种方法: 一.命令提示符(管理员)启动 "w ...

  6. 如何使git忽略某些文件或文件夹

    为什么要忽略某些文件或文件夹的变化? git作为一款项目文件变更版本管理软件,其主要功能之一就是追踪项目文件夹内各种文件及文件夹的变更情况.但是,在日常使用中,并非项目文件夹下的所有文件及文件夹变更都 ...

  7. February 9 2017 Week 6 Thursday

    Happy life lies in a peaceful mind. 幸福的生活存在于心绪的宁静当中. What can be seen as happy life? Maybe the answe ...

  8. ZT 怎么样才算熟悉设计模式? [问题点数:40分,结帖人jiaoyun007]

    http://bbs.csdn.net/topics/390448668?page=1#post-394406161 近日面试,因为个人简历里有“熟悉设计模式”这句话,面试官边侃侃发问了:什么是装饰模 ...

  9. ADFUtils

    import java.text.SimpleDateFormat; import java.util.Map; import javax.el.ELContext;import javax.el.E ...

  10. AlexNet 分类 FashionMNIST

    from mxnet import gluon,init,nd,autograd from mxnet.gluon import data as gdata,nn from mxnet.gluon i ...