Django 学习 (第五部)
表设计:
from django.db import models # Create your models here.
# class Foo(models.Model):
# name = models.CharField(max_length=1) class Business(models.Model):
# id
caption = models.CharField(max_length=32)
code = models.CharField(max_length=32,null=True,default="SA")
# fk = models.ForeignKey('Foo') class Host(models.Model):
nid = models.AutoField(primary_key=True)
hostname = models.CharField(max_length=32,db_index=True)
ip = models.GenericIPAddressField(protocol="ipv4",db_index=True)
port = models.IntegerField()
b = models.ForeignKey(to="Business", to_field='id')
#
class Application(models.Model):
name = models.CharField(max_length=32)
r = models.ManyToManyField("Host")
'''
Models 层是 Django 框架中最强大的部分之一, 大大方便了 Web 层与数据层的交互。
由于对 Model 层缺少系统理解,在使用 model Api 时经常需要查找文档,
在此做一次系统地整理。 一个model类对应数据库中的一张表, 类中的属性代表数据库中的各个字段。 类实例化后的对象, 代表数据库中的一条记录。 '''
'''
3、filter 级联 filter,
exclude (不包含)等方法不仅仅可以单独使用, 也可以级联进行使用 创建 model 对象 Model 对象实例化之后,可以调用 save() 方法其写入到数据库。
from blog.models import Blog # 实例化对象
b = Blog(name='Beatles Blog', tagline='All the latest Beatles news.')
# 将对象写入数据库
b.save() 当执行 save() 函数时, ORM 会执行 INSERT SQL 语句, 将数据写入数据库。在调用 save() 函数之前, 实例不会执行 INSERT 操作。
保存对象更新 假设: 上例中的 b 实例已经存入数据库, 现在要更新 b 中的 tagline 字段。先更新 tagline 对应的值,然后执行 save() 操作。如下:
#更新 tagline 字段
b.tagline = 'All the latest Beatles new 03/28'
# 将更新写入数据库
b.save() 例: 查询姓名为 paul 的作者:
# 返回的 QuerySet 对象中只包含 name='paul' 的 model 对象
Author.objects.filter(name='paul') 例: 查询姓名不为 paul 的所有作者:
# 返回的 QuerySet 对象中,不包含 name='pual' 的 model 对象
Author.objects.exclude(name='paul') 上面介绍的 filter() 等方法返回的结果是 QuerySet 对象。如果明确知道有且只有一个对象可以查询到时,可以使用 get() 方法进行查询, 其返回结果为一个 model 对象。
1 one_entry = Entry.objects.get(pk=1) 返回的 one_entry 为 model 对象, 而不是 QuerySet 对象。
采用这种方法查询是,如果查询结果为空,将抛出 DoesNotExist 异常。在一般情况下,不建议使用可以使用如下方式代替: one_entry = Entry.objects.filter(pk=1)
if one_entry.exists():
one_entry = one_entry[0] pk 缩写 在 Django 中采用 pk 缩写来表示 ‘primary key’, 表中的 id (primary key) 主键 字段,可以使用 pk 来表示
例如: 下面的查询语句等价 Blog.objects.get(id__exact=13)
Blog.objects.get(id=13)
Blog.objects.get(pk=13) ''' 具体参见:# https://www.cnblogs.com/zhaoyingjie/p/6984957.html
Django下的migrations
Django migrations的时候我们可能遇到两个工具:
django-admin和manage.py。
其实它们的作用是一样的,不同的是
django-admin是存放在python的site-packages/django/bin路径,
manage.py是在创建project的时候生成的。使用django-admin可以对不同的项目进行设置。
Migrations主要包括以下几个命令:
makemigrations
作用:根据model的变化生成对应的python代码,该代码用于更新数据库。
语法:django-admin makemigrations [app_label [app_label ...]]
如果没有填写任何参数,django会检查所有应用程序中的model变化生成python脚本
,脚本存放在每个应用下面一个叫做migrations的文件夹下,脚本名字类似0001_initial.py格式。
centos安装django
https://www.cnblogs.com/joy99/p/9034253.html
Django 学习 (第五部)的更多相关文章
- Django( 学习第五部 Django之模板语法)
目录 模板语法 --- 传值 摸板语法 --- 过滤器 模板语法 --- 标签 自定义过滤器.标签.inclusion_tag 模板的继承 模板语法 --- 传值 {{}} 变量相关 {% ...
- 今天主要推荐一下django学习的网址!
前言:每个月忙碌的头20天后,在上班时间投入到django理论学习的过程中,花了差不多3天时间简单的研究了一下django,着实废了我不少脑细胞. 采用虫师前辈的一张图和话: 如果你把这过程梳理清晰了 ...
- Django 学习笔记之四 QuerySet常用方法
QuerySet是一个可遍历结构,它本质上是一个给定的模型的对象列表,是有序的. 1.建立模型: 2.数据文件(test.txt) 3.文件数据入库(默认的sqlite3) 入库之前执行 数据库同步命 ...
- Django 学习笔记之三 数据库输入数据
假设建立了django_blog项目,建立blog的app ,在models.py里面增加了Blog类,同步数据库,并且建立了对应的表.具体的参照Django 学习笔记之二的相关命令. 那么这篇主要介 ...
- Django学习系列之Form基础
Django学习系列之Form基础 2015-05-15 07:14:57 标签:form django 原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追 ...
- Django学习笔记(五)—— 表单
疯狂的暑假学习之 Django学习笔记(五)-- 表单 參考:<The Django Book> 第7章 1. HttpRequest对象的信息 request.path ...
- Django学习笔记(三)—— 型号 model
疯狂暑期学习 Django学习笔记(三)-- 型号 model 參考:<The Django Book> 第5章 1.setting.py 配置 DATABASES = { 'defaul ...
- django学习之Model(二)
继续(一)的内容: 1-跨文件的Models 在文件头部import进来,然后用ForeignKey关联上: from django.db import models from geography.m ...
- Python框架之Django学习
当前标签: Django Python框架之Django学习笔记(十四) 尛鱼 2014-10-12 13:55 阅读:173 评论:0 Python框架之Django学习笔记(十三) 尛 ...
- Django 学习笔记(二)
Django 第一个 Hello World 项目 经过上一篇的安装,我们已经拥有了Django 框架 1.选择项目默认存放的地址 默认地址是C:\Users\Lee,也就是进入cmd控制台的地址,创 ...
随机推荐
- Force.com 多租户架构
本文参考自官方文档. 多租户架构 作为云计算平台的先驱,Salesforce最大的特点是"软件即服务"(Software as a Service,Saas).实现这种技术的基础便 ...
- Flutter 布局(九)- Flow、Table、Wrap详解
本文主要介绍Flutter布局中的Flow.Table.Wrap控件,详细介绍了其布局行为以及使用场景,并对源码进行了分析. 1. Flow A widget that implements the ...
- (网页)the server responded with a status of 403 (Forbidden)
403跨域问题.看一下要访问的url.
- C#语言————第二章 C#语言快速热身
第二章 C#语言快速热身 ***********一.选择结构**************** 1:if选择结构与java的if选择结构语法完全相同 2:switch选择结构 ①:常量表达式的值可 ...
- SQL Server 将一个表中字段的值复制到另一个表的字段中
具体方法如下 一:update 表2 set (要插入的列名)= select 表1.某一列 from 表1 left jion 表2 on 表1和表2的关联 where ..... 二:update ...
- HDU ACM 1856 More is better(并查集)
[题目链接]http://acm.hdu.edu.cn/showproblem.php?pid=1856 [解题思路]给的数据有点大,干脆少开点数组,直接上set存储有朋友的孩子的编号,同时根据编号初 ...
- centos7发行版号对应基于RHEL Source(版本)对照表
基础分布 详情地址:https://wiki.centos.org/Download 存档版本 CentOS Linux 7 发布 基于RHEL Source(版本) 存档的树 7(1804) 7.5 ...
- Linux 小知识翻译 - 「X Window系统」
X Window System是给Unix系的OS提供的一套窗口管理软件或者说是组件.X Window System已经成为了在Linux上使用GUI环境的不可或缺的东西了. X Window Sys ...
- 真机测试以及appstore发布流程
一.添加真机测试流程:http://jingyan.baidu.com/article/48b558e33b96a27f38c09aa4.html 二.app发布流程:http://jingyan.b ...
- elasticsearch版本控制及mapping映射属性介绍
学习elasticsearch不仅只会操作,基本的运行原理我们还是需要进行了解,以下内容我讲对elasticsearch中的基本知识原理进行梳理,希望对大家有所帮助! 一.ES版本控制 1.Elast ...