1对多

1对多:
models :模型添加把关联的键添加在多的那个模型中
usertype -----------> user
1.大众 -----------> 志强 2
2.黄金 -----------> 强强 2
3.vip -----------> 树风 2
在这种关系中
在多的模型上添加:

usertype = models.ForeignKey(UserType,on_delete = models.CASCADE, default = 1)

使用:

1.添加:

user = User.objects.create(username=username,password=password,mobile=mobile,email=email,usertype_id=usertype_id)

2.查询

根据用户类型找用户:
根据1找多

#ut 是用户的id
user=User.objects.filter(usertype_id=ut)
#获取id = ut 的usertype
usertype = UserType.objects.get(id=ut)
usertype.user_set.all()
 class班级    student学生
      department 部门    employee 员工  models.ForeignKey()
      goodsType  商品类型   goods 商品

       class_obj.student_set.all()

       对象.多_set.all()

       department.employee_set.all()
       根据多找1:
       已知用户得到类型
       user.usertype.name
       

多对多:

1个用户可以买多件商品
1个商品可以被多个用户购买

user     goods
    1         2
    1         3
    1         4
    2         3
    3         4
    2         4
    4         3

student  course
   1       5
   1       1
   1       3
   2       5
   3       5
   4       5

使用:
	添加: add
	#获取想要添加的商品的id
	gid = request.GET.get('id')
	#通过这个id找到商品
	goods = Goods.objects.get(id = gid)
	#是谁想要添加这个商品
	user = User.objects.get(id=1)
	# 商品添加给那个用户
	goods.users.add(user)
删除:remove
	# 获取用户id
	user = User.objects.get(id = userid)
	# 获取用户id
	goods = Goods.objects.get(id = goodsid)
	# user.goods_set 表示的是用户商品购物车中.remove(goods)移除某个商品
	user.goods_set.remove(goods)
	# goods.user.remove(user)

单表操作:
Goods 表与 User表

增:Goods.objects.create()  # 第一种
	# 第二种
	goods = Goods()
	goods.name = xxxx
	goods.save()
删:Goods.objects.filter(id=id).delete()
	goods = Goods.objects.get(id=id)
	goods.delete()
改:Goods.objects.filter(id=id).update(name='xxx')
	goods = Goods.objects.get(id=id)
	goods.name='xxx'
	goods.save()
查: Goods.objects.get(id=id)
	Goods.objects.filter(name__contains='水果')
	Goods.objects.filter(number__lt=10)

多表:

  11:models.OneToOneField()

  1对多: models.ForeignKey()

  多对多:   models.ManyToManyField()
          建议:自定义多对多


  重点掌握查:

  usertype.user_set.all()

  user.goods_set.all()
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值