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)
多表:
1对1:models.OneToOneField()
1对多: models.ForeignKey()
多对多: models.ManyToManyField()
建议:自定义多对多
重点掌握查:
usertype.user_set.all()
user.goods_set.all()