- Models操作:
- 创建表:业务线
- models.xx.objects.create(name='欧美')
- models.xx.objects.create(**dic)
- models.xx.objects.filter(id__gt).delete()
- models.xx.objects.filter(id=1).delete()
- models.xx.objects.exclude(id=1).delete()
- models.xx.objects.filter(id=1).update(name='ddd')
- models.xx.objects.filter(id=1).update(**dic)
- 创建表:
业务表
主机表(id host port bs) ==> bs为外键
关系:一个主机对应一个业务线,一个业务线对应多个主机(一对多的关系)
----------------------------------------------------------
#queryset = [对象,对象,.....]
- objs = models.xx.objects.all()
for row in objs:
row.id
row.host
row.port
row.bs.name
#queryset = [{},{},.....]
- objs = models.xx.objects.all().values('id','host','port','bs__name')
for row in objs:
row['id']
row['host']
row['port']
row['bs__name']
#queryset = [(1, 1.1.1, 80,'web'),(),()....]
- objs = models.xx.objects.all().values_list('id','host','port','bs__name')
for row in objs:
row[0]
row[1]
row[2]
row[3]
基于外键(bs)的操作就上面这些.
---------------------------------------------------------
- 创建表:
用户表(id,user,pwd,email) mm写在这个表里
业务线(id,name)
主机表(id,host,port,bs)
用户业务线关系表(id uid bid)
- obj = models.user.objects.filter(user='日语哥').first()
#日语哥增加1和11两条业务线
obj.mm.all(1)
obj.mm.all(11)
#获取日语哥负责的所有业务线
queryset = obj.mm.all() [业务线对象,业务线对象]
for row in queryset:
row.id
row.name ==>业务线的名字
- 二手车业务线是由哪些人负责的(反向查询)
obj = models.business_unit.objects.filter(name='二手车').first()
queryset = obj.userinfo_set.all() #[用户对象,用户对象]
for row in queryset:
row.user
row.pwd
总结:在多对多中,mm写在哪个表里,哪个表操作就很方便,但是实际上都是一样的,
因为mm与userinfo_set(第三张表小写_set)字段起的作用是一样的,只不多一个
显示,一个隐示而已.
--------------------------------------------------------------
ORM2(转载)
最新推荐文章于 2024-08-11 22:34:14 发布