django多表查询

  1. 设置外键
    usertype是主表,userinfo是从表

    user_type=models.ForeignKey(to="usertype",to_field="id",default=1,on_delete= models.CASCADE)
    
    • models.CASCADE,删除关联数据,与之关联也删除
    • models.DO_NOTHING,删除关联数据,引发错误IntegrityError
    • models.PROTECT,删除关联数据,引发错误ProtectedError
    • models.SET-NULL,删除关联数据,与之关联的值设置为null(前提该字段null为true)
    • models.SET_DEFAULT,删除关联数据,与之关联设置为默认值
  2. 查询数据

    #正向查询
    users=models.userinfo.objects.all().values('telephone','user_type__name')
    
    #逆向查询
    t=models.usertype.objects.get(name='vip')
    users=t.userinfo_set.all()
    
  3. 添加数据

    #先查出对象
    obj_type=models.Type.objects.filter(name='vip')[0]
    #直接添加数据
    user={
    	"telephone":"123",
    	"password":"123",
    	"user_type":obj_type
    }
    res=models.userinfo.objects.create(**user)
    
  4. 创建多对多关系表

    # 模拟多对多关系:用户-投递-职位
    	class applyposition(models.Model):
    	    id = models.AutoField(primary_key=True)
    	    # 自动创建一个id列,id为主键、自增长
    	    uobj = models.ForeignKey(to=userinfo,to_field='id',on_delete=True)
    	    pobj = models.ForeignKey(to="position",to_field='id',on_delete=True)
    	    publish_time=models.DateTimeField(auto_now_add=True,null=True)
    
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值