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)
    

猜你喜欢

转载自blog.csdn.net/qq_42650983/article/details/82972276