ORM2(转载)

- 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()
  #日语哥增加111两条业务线
  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)字段起的作用是一样的,只不多一个
显示,一个隐示而已.
--------------------------------------------------------------

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值