orm操作
查询
filter()
数组判断
- 大于 id__gt=30
- 大于等于 id__gte ==30
- 小于 id__gt==30
- 在 id__in=[11,22,33]
字符串
包含:link__contains="xxx"
开始/ 结束 link__startwith/endwith
多个条件 filter(a,b)
exclude() :
不包含 与filter相反
values(xxx:需要的字段)
将QUerySet内部变为字典
values_list(xxx:需要的字段)
将QUerySet内部变为元祖
first()
第一条:返回对象 不存在返回None
exists()
是否存在 return Boolean
order_by("id","-id")
按照字段排序
一对多
表结构
class admin(models.Model):
name=models.CharField(max_length=127)
pwd=models.CharField(max_length=127)
rid=models.ForeignKey(to="Depart",on_delete=models.CASCADE)
class Depart(models.Model):
name=models.CharField(max_length=127)
od=models.IntegerField(default=0)
如果有多个Foreign关联同一张表 通过related_name=““xx1” 重命名定向
value(xx1__name),xx1_id=1
- 创建关系 直接添加: rid_id
admin.objects.create(
name="11",
pwd="1212",
rid_id=1
)
- 创建关系 通过关联查询 : rid
admin.objects.create(
name="testname",
pwd="1212",
rid=Depart.objects.filter(name="销售部").first()
)
关联id不存在,则报错。
跨表:查找rid相关联的字段
admin.objects.filter(name="李雷",rid__name=="销售部")
连表字段:
admin.objects.all().value/value_list ("name","rid__name")
查询时链表
list=admin.objects.all().select_related("rid")
for obj in list:
print(obj.rid.id,obj.rid.name)
取值时判断(性能差)
list=admin.objects.all()
print(obj.rid__id,objrid__name)
查询depart下的admin账号(反向查询)
Depart.objects.all().values("name","admin","admin__name")
多对多
class boy(models.Model):
name = models.CharField(max_length=127)
def __str__(self):
pass
class girl(models.Model):
name = models.CharField(max_length=127)
class Meta:
verbose_name = "girl"
verbose_name_plural = "girl"
class B2g(models.Model):
name = models.CharField(max_length=127)
bid=models.ForeignKey(to="boy",on_delete=models.CASCADE)
gid=models.ForeignKey(to="girl",on_delete=models.CASCADE)
创建多对多关系
B2g.object.create(bid_id=1,gid_id=1)
通过对象
B2g.object.create(bid=object,gid=obj)
查询对象
- 通过链表查询
B2g.objecs.filter(bid__name="xx").select_related("gid")
连接到boy的信息和girl的信息
- 通过values/values_list
B2g.objecs.filter(id="xx").values("id","bid__name","gid__name")
本文作者:MyKai
本文链接:https://www.cnblogs.com/mykai/p/17585650.html
版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步