djano一对一,多对多,分页
Posted zrx19960128
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了djano一对一,多对多,分页相关的知识,希望对你有一定的参考价值。
-
ORM高级查询
-filter
id=3
id__gt=3
id__lt=3
id__lte=3
id__gte=3
-in /not in
.filter(id__in=[]) in
.exclude(id__in=[]) not in
-between......and
.filter(id__range=[])
-like
.filter(name__startswith=‘XX‘) like ‘XX%‘
.filter(name_istartswith=‘XX‘) #忽略大小写
.filter(name__endswith=‘XX‘) like‘%XX‘
.filter(name__contains=‘XX‘) like‘%XX%‘
.filter(name_regax=‘^XX$‘) like‘%XX%‘精准匹配
-or
from django.db.models import Q
Q和|连用为or
&为and
-order by
models.UserInfo.objects.all().order_by(‘id‘)#升序#(‘-id‘)则为降序
#若有2个值,则第一个先排序,第二个后排序
-group by
from django.db.models import Sum,Count,Min,Max
models.UserInfo.objects.values(‘name‘).annota1te(xx=Sum(‘age‘))
models.UserInfo.objects.values(‘name‘).annota1te(xx=Sum(‘age‘)).filter(XX__gt=50)#二次筛选
-count
models.UserInfo.objects.count()
-limit分页
models.UserInfo.objects.all()[X,XX]#利用切分来分页
-distinct
models.UserInfo.objects.values(‘XX‘).distinct()
-原生SQL
from django.db import connection
-first
-last两个返回的都是对象
?
-only
返回值为列表里面套对象
-defer
除了某一列以外的其他对象,返回值为列表套对象、
-F
拿到某一列的值,但是只能进行数组操作
?
-
XSS -跨脚本(js)攻击
原因: 服务端太相信客户端传过来的参数
django中自带转译 ? 消除django中的转译 name|safe safe为相信
今日内容:
-
一对一
母表:userinfo
id name age
1 zekai 18
2 lxxx 58
private:
id salary sp_id(外键+unique)
1 5000 1
2 4000 2
一对一:OneToOneField("表名",null=True)默认要求该字段必须是唯一的unique外键关系
?
#从母表查询子表的数据
查询一下name=‘zekai‘的这条数据
res = models.UserInfo.objects.filter(name=‘zekai‘).first()
print(res.private.salary)
#res.子表表名小写.子表字段名
?
#从字表查询母表中的数据
查询salary=5000的这个数据所对应的用户的信息
res= models.Private.objects.filter(salary=5000).first()
print(res.sp.name,res.sp.age)
#res.关联的字段名.母表字段名
? -
多对多
相亲模型
boy:
id name
1 laowang
2 XXX
girl:
id name
1 正正
2 连连
3 爱爱
4 凤姐
5 乔碧萝
boy2girl
id bid gid
1 1 1
2 1 2
3 1 3
4 2 2
5 2 4
6 2 5
models.py:
class Boy(models.Model):
bname=models.CharField(max_length=32,null=True)
?
class Girl(models.Model):
gname=models.CharField(max_length=32,null=True)
?
class Boy2Girl(models.Model):
b = models.ForeignKey("Boy",null=True)
g = models.ForeignKey("Girl",null=True)
?
?
#联合唯一索引
class Meta:
unique_together=[
(‘b‘,‘g‘)
]
views.py:
def test1(rsquest):
boyinfo= [
models.Boy(bname=‘雷俊‘),
models.Boy(bname=‘雷鸣‘),
models.Boy(bname=‘雷公‘),
models.Boy(bname=‘雷军‘),
models.Boy(bname=‘雷峰‘),
?
]
?
girlinfo=[
models.Girl(gname=‘真真‘),
models.Girl(gname=‘天天‘),
models.Girl(gname=‘爱爱‘),
models.Girl(gname=‘凤姐‘),
models.Girl(gname=‘乔碧萝‘),
?
]
models.Girl.objects.bulk_create(boyinfo)
?
b2ginfo=[
models.Boy2Girl(b_id=1,g_id=1),
models.Boy2Girl(b_id=2, g_id=4),
models.Boy2Girl(b_id=3, g_id=3),
models.Boy2Girl(b_id=4, g_id=5),
models.Boy2Girl(b_id=5, g_id=2),