禁用django的物理外键(CONSTRAINT,REFERENCES)

背景

用django自带的admin和auth搭建了内部网站,使用了django的用户和权限分组系统,但是在移到生产环境时发现公司把REFERENCES这种命令禁止了,DBA说影响性能不给开权限,所以不得不尝试把外键从db层移到应用层。

第一次尝试

刚开始只找到https://docs.djangoproject.com/en/dev/ref/models/fields/#django.db.models.ForeignKey.db_constraint,中db_constraint这个参数,尝试了下的确可以移除物理外键,但是由于我使用的User,Group等对象都是django内部的模型,我如果要修改的话,要么改源码,要么只能重写了。

于是模仿https://www.zhihu.com/question/61129892/answer/189472143中,对AbstractBaseUser和PermissionsMixin这两个类里只要用到ForeignKey或者manttomany的字段都加上db_constraint=False这个参数。具体代码就不展示了。反正最后不是很顺利,跟内部很多东西有冲突,看起来即使弄好了也没法用权限系统,因此尝试其他方法。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值