Django中ORM操作

本文介绍了使用ORM进行数据库操作的方法,包括模型定义、正向和反向跨表查询的具体实现方式,并展示了如何通过中间表或多对多字段来管理多对多关系的数据。

ORM操作:

        

         class UserInfo(models.Model):

                   username = models.CharField(max_length=32)

                   password = models.CharField(max_length=64)

                   dp = models.ForeignKey(to='DePart',to_field='id')

                   # depart = models.ForeignKey('DePart')

                  

         class DePart(models.Model):

                   title = models.CharField(max_length=16)

                  

         # ForeignKey查询

        

         # 正向跨表查询

         # 1.对象

         # q = models.UserInfo.objects.all()

         # for row in q:

         #      print(row.username,row.password,row.dp_id,row.dp.id,row.db.title)

                  

         # 2.字典

         # q = models.UserInfo.objects.values('username','password','dp_id','dp__title')

         # for row in q:

         #      print(row['username'],row['dp__title'])

                  

         # 3.元祖

         # q = models.UserInfo.objects.values_list('username','password','dp_id','dp__title')

         # for row in q:

         #      print(row[0],row[3])

        

        

         # 反向跨表查询

         # 1.对象

         # v = models.DePart.objects.all()

         # for row in v:

         #      print(row.id,row.title,row.userinfo_set.all())

                  

         # 2.字典

         # v = models.DePart.objects.values('id','title','userinfo__username','userinfo__password')

         # for row in v:

         #       print(row)

        

         # 3.元祖

         # v = models.DePart.objects.values('id','title','userinfo__username','userinfo__password')

         # for row in v:

         #      print(row)

        

        

         # 自己写第三张表

                   def U2G(models.Model):

                            ui = models.ForeignKey('UserInfo')

                            ug = models.ForeignKey('UserGroup')

                  

                   # 添加数据

                   models.U2G.objects.create(ui=1,ug=1)

                   models.U2G.objects.create(ui=1,ug=2)

                   models.U2G.objects.create(ui=2,ug=1)

                   models.U2G.objects.create(ui=2,ug=2)

                  

                   # 查询

                   q = models.U2G.objects.all()

                   for row in q:

                            print(row.ui.username)

                            print(row.ug.caption)

        

         # django 自动生成

        

                   m = models.ManyToManyField('UserInfo')

                  

                   增加:

                            obj = models.UserGroup.objects.filter(id=2).first()

                            obj.m.add(1)

                            obj.m.add(1,2,3)

                            obj.m.add(*[1,2]) #一次多加一个

                           

                   删除:

                            obj = models.UserGroup.objects.filter(id=2).first()

                            obj.m.remove(1)

                            obj.m.remove(2,3,4)

                            obj.m.remove(*[2,3,4])  

                           

                   清空:

                            obj.m.clear() # 没有参数

                           

                   更新:设置为什么, 最后就只有什么

                            obj.m.set([3,])

                           

                   查询:

                            q = obj.m.all()

                            print(q)

                           

                            q = obj.m.filter()

        

 

                   

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值