Django Model two
Django_model:
eg:
class XXXX(models.Model):
nid = models.AutoField(primary_Key=True)
name = models.CharField(max_length=32)
age = models.IntegerField()
authorDetail = models.OneToOneFiled(to='AuthorDetail')
author = models.ManyToManyField(to='Author')
publish = models.ForeignKeyField(to='Publish',to_field='nid')
字段的选项:
1.null 是否允许为空
2.blank 在表单填写的时候,是否可以不填
3.default 字段的默认值
4.primary_Key 是否为主键
5.unique 是否联合唯一
6.choice 多选
添加表记录:
普通字段:
1.publish_obj = Publish(name='人民出版社',city='北京')
publish_obj.save()
2.publish_obj = Publish.create(name='人民出版社',city='北京')
外键字段:
1.publish_obj = Publish.objects.filter(nid=1)[0]
Book.objects.create(title='python',publish=publish_obj)
2.Book.objects.create(title='python',publish_id=1)
关键点:book_obj.publish得到的就是这本书所对应出版社的对象,可以直接调用publish的属性
多对多字段:
book_obj.authors.add(author_obj1,author_obj2)
book_obj.authors.create() #创建并保存一个新的
book_obj.authors.all() #查询所有
book_obj.authors.remove() #将某个特定的对象删除
book_obj.authors.clear() #清空所有关联
两个删除方式,必须是多对多字段可以为空时,即null=True
查询相关method:
1.all() 查询所有
2.filter() 获取所有过滤后的queryset
3.get() 获取一个queryset,多余1个或者为0时报错
4.exclude() 所给筛选条件不匹配的对象
5.values() 返回需要的字段,以字典的形式,返回多个queryset
6.values_list() 返回需要的字段,以元祖的形式,返回一个queryset
7.order_by() 对查询结果排序
8.distinct() 从返回结果中删除重复的对象
9.reverse() 对查询结果反向排序
10.count() 返回匹配中的个数
11.firsr() 返回第一个
12.last() 返回最后一个
13.exists() 如果存在就返回True
14.only() 查找时只取所对应的字段,而不是取所有
15.defer() 和only相反
查询:
一对多:
正向:book_obj.publish.city
反向:publish_obj.book_set.title
一对一:
正向:author_mihon.authorDetail.telephone
反向:authorDetail_obj.author.name
多对对:
同一对一
聚合查询:
from django.db.models import Avg,Max,Min
Book.objects.all().agregate(avg_price=Avg('price')) -->{'avg_price':24.26}
Book.objects.all().agregate(Avg('price'),Max('price'),Min('price'))
{'price__avg': 34.35, 'price__max': Decimal('81.20'), 'price__min': Decimal('12.99')}
分组查询:
book_list = Book.objects.annotate(authorNum=Count('authors')) 统计每一本书的作者数
author_list = Author.objects.annotate(bookNum=Count('book')).filter(bookNum__gt=1) 统计出书不少于一本的作者
book_list = Book.objects.annotate(authorNum=Count('authors')).filter(authorNum__gt=1) 统计不止一个作者的书
book_list = Book.objects.annotate(authorNum=Count('authors')).order_by('authorNum') 根据每本书的作者数进行排序
F查询:
Book.objects.all().update(price=F('price')+30)
Q查询:
bookList = Book.objects.filter(Q(author_name='yuan')|Q(author_name='mihon'))
动态Q查询:
con = Q()
q1 = Q()
q1.connector = 'AND'
q1.children.append(('email',value_dict['email']))
q1.children.append(('password',value_dict['password']))
q2 = Q()
q2.connector = 'AND'
q2.children.append(('email',value_dict['email']))
q2.children.append(('email',value_dict['password']))
con.add(q1,'OR')
con.add(q2,'OR')
Django Model two的更多相关文章
- 【转】Django Model field reference学习总结
Django Model field reference学习总结(一) 本文档包含所有字段选项(field options)的内部细节和Django已经提供的field types. Field 选项 ...
- Django model字段类型清单
转载:<Django model字段类型清单> Django 通过 models 实现数据库的创建.修改.删除等操作,本文为模型中一般常用的类型的清单,便于查询和使用: AutoField ...
- Django:Model的Filter
转自:http://www.douban.com/note/301166150/ django model filter 条件过滤,及多表连接查询.反向查询,某字段的distinct 1.多表 ...
- Django model中 双向关联问题,求帮助
Django model中 双向关联问题,求帮助 - 开源中国社区 Django model中 双向关联问题,求帮助
- django 自定用户系统 以及 Django Model 定义语法
http://www.tuicool.com/articles/jMzIr2 django使用自己的用户系统 http://www.jianshu.com/p/c10be59aad7a Django ...
- tornado with MySQL, torndb, django model, SQLAlchemy ==> JSON dumped
现在,我们用torndo做web开发框架,用他内部机制来处理HTTP请求.传说中的非阻塞式服务. 整来整去,可谓之一波三折.可是,无论怎么样,算是被我做成功了. 在tornado服务上,采用三种数据库 ...
- Django Model field reference
===================== Model field reference ===================== .. module:: django.db.models.field ...
- Django model对象接口
Django model查询 # 直接获取表对应字段的值,列表嵌元组形式返回 Entry.objects.values_list('id', 'headline') #<QuerySet [(1 ...
- Django学习之四:Django Model模块
目录 Django Model 模型 MODEL需要在脑子里记住的基础概念 区分清楚,必须不能混淆的 class Meta 内嵌元数据定义类 简单model创建实例 数据源配置 接着通过models在 ...
- Django Model Form
ModelForm ModelForm结合了Form和Model,将models的field类型映射成forms的field类型,复用了Model和Model验证, 写更少的代码,并且还实现了存储数据 ...
随机推荐
- 单机版mongodb
1.下载安装包 wget http://fastdl.mongodb.org/linux/mongodb-linux-i686-1.8.2.tgz 下载完成后解压缩压缩包 tar zxf mongod ...
- 关于死循环while(true){}或for(;;){}的总结
关于死循环while(true){}或for(;;){}的总结 1.基本用法: while(true){ 语句体; } for(;;){ 语句体; } 以上情况,语句体会一直执行. 2 ...
- .Net平台互操作技术:02. 技术介绍
上一篇文章简单介绍了.Net平台互操作技术的面临的主要问题,以及主要的解决方案.本文将重点介绍使用相对较多的P/Invoke技术的实现:C#通过P/Invoke调用Native C++ Dll技术.C ...
- Java 变量及基本数据类型
1.Java变量 1.1 变量的概念 内存中开辟的一块存储空间,用于存放运算过程中需要用到的数据: 该区域有自己的名称(变量名)和类型(数据类型): 该区域的数据可以在同一类型范围内不断变化: 1) ...
- 3. Netbackup 7.6客户端的安装(windows/linux)
1 客户端的安装 1.1 Windows客户端安装 1.1.1 客户端hosts修改 windows xp/2003/vista/2008/7/8用户HOSTS文件是在“c:\windows\syst ...
- [web开发] Vue + spring boot + echart 微博爬虫展示平台
1.微博登录 2.爬取数据 3.mysql存储 4.pyechart本地展示 5.用vue搭建网站web展示 先放图: 1.微博登录 新浪微博的登录不是简单的post就能解决的,他的登录有加密,所以我 ...
- 2018.4.10 Ubuntu cat命令解答、用法
cat命令是linux下的一个文本输出命令,通常是用于观看某个文件的内容的: cat主要有三大功能: 1.一次显示整个文件. $ cat filename 2.从键盘创建一个文件. $ cat > ...
- argsort argmax
argsort是将array排序并返回坐标值,默认是从小到大,添加负号-变成从大到小.这个函数并不改变原来的array. >>> a = np.array([1,5,3,1]) &g ...
- Django models多表操作
title: Django models多表操作 tags: Django --- 多表操作 单独创建第三张表的情况 推荐使用的是使用values/value_list,selet_related的方 ...
- 记录一次mysql中自定义获取UUID的函数
循环方式一: DELIMITER :; drop function if exists test.fn_test:; create function test.fn_test() ) begin ) ...