首页Django正文

DRF中关于多对多的问题

提问未结 4 77

现在有三张表

https://sss.the5fire.com/v_the5fire/3a4266ff219e7d448b37a69863adc43c.pnghttps://sss.the5fire.com/v_the5fire/07069e06ce5a0599dc26aea56d0f4183.pnghttps://sss.the5fire.com/v_the5fire/726d23925a29f169d1f3b73e0087f73d.png 现在的问题是:加入我创建一个team,要跟platform关联,知道怎么创建,但是不知道怎么更新?https://sss.the5fire.com/v_the5fire/dbc24943e80c4c6dfcc25a02d9caaf6a.png 求助,DRF是真的搞不太懂

回帖
  • Cluas
    2018年8月14日 16:13

    重写 update方法

  • DAshuzahuopu
    DAshuzahuopu(楼主)
    2018年8月15日 11:05

    http://the5fireblog.b0.upaiyun.com/v_the5fire/0fceb52372b470eeda77e0e14f037e0f.png 这是我重写后的create方法,但是现在又遇到一个问题,就是我更新多对多之外的字段也会把中间表中,跟这个team相关的记录清空在重新写入,比如team表里面一个字段(不是多对多的)但是我修改了这个字段之后,还是会清空关系表之后,重写写入,没头绪

  • the5fire
    2018年8月16日 17:51

    不太清楚题主想做什么,直观看起来,你这种每次清楚数据重新插入的逻辑就有问题,你需要程序保证数据的一致性。

    可以尝试下其他的方法。

    不过你应该先描述下要做什么需求。

  • DAshuzahuopu
    DAshuzahuopu(楼主)
    2018年8月19日 07:58
    1. 目前我了解到,有这样这一种情况,项目(用的是DRF框架)存在中m2m关系,如果创建一条新的记录,这条记录是不会自动写进关系表的,要重写serializers中的create方法,更新是不需要大费周章的重写serializers中的update方法的,只需要在view中冲重写一下,patch对应的方法就可以了,目前这个(update)还没有实现