请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

老师,数据库没有外键,怎实现对数据库的增删改查操作

数据库当时在设计的时候考虑到以后的扩容和大的数据量 ,所有的外键关系全都拆分成多表通过主键ID来做,但是这样做的话serializer里面 post/get/put 感觉全部都要分开实现,get请求我的解决办法是写一个只读的SerializerMethodField

然后在get_  方法里面通过写数据库查询逻辑查相关联的数据,这样是可以查到,但是get/put方法目前遇到困境了,不知道怎么解决,老师有更好的解决这种没外键的 关系数据库的 方式么。 之前想自己写serializer.Seralizer 然后重载create方法,在create方法里面分别将多表的字段存储到各自的数据库中去,但是最后返回的只是一个数据库表的 Model.object.create() ,导致后面调用的时候会报错,说其他表的字段不再这个model中

正在回答

1回答

bobby 2018-05-10 14:46:51

数据库设计中 model里面你仍然可以设置外键, 但是数据库中你把外键删除 就是说数据库中不是外键 但是你的model仍然是外键, 这样其实也不会有问题的, 既保留了数据库不是外键, 同时又可以使用model的外键查询功能,你可以试试

1 回复 有任何疑惑可以回复我~
  • 厉害了 还可以这样
    回复 有任何疑惑可以回复我~ 2018-05-10 16:51:41
  • 请问老师,是这个方案的性能更优,还是通过serializers.SerializerMethodField()连表处理方案更好??谢谢
    回复 有任何疑惑可以回复我~ 2020-05-15 15:10:54
  • bobby 回复 winfred_wu #3
    外键机制插入和更新数据性能会降低,但是使用的时候更方便,性能也会好一些,如果你对性能要求高就不要用外键了,但是数据一致性你需要自己保证
    回复 有任何疑惑可以回复我~ 2020-05-17 09:15:29
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信