千里之行,始于足下.|

MyKai

园龄:4年6个月粉丝:0关注:17

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 中国大陆许可协议进行许可。

posted @   MyKai  阅读(5)  评论(0编辑  收藏  举报
点击右上角即可分享
微信分享提示
评论
收藏
关注
推荐
深色
回顶
收起