dajngo项目后台管理之编辑(修改数据库)

对于单个数据库

对于一个数据库的修改, 当然也可以修改关联的其他数据库, 那就得再加点代码
此处的代码只是对一个数据库的修改有效

class update_case_optins(APIView):
	def post(self, request):
        case_ques = Case_Question.objects.get(id=pk)

        post_data = request.data

        exclude = [k for k in post_data.keys() if k not in Case_Question.__dict__.keys()]
        post_data = dict(post_data.items())
        [post_data.pop(k) for k in exclude]

        with transaction.atomic():
            # TODO: 封装起来
            for key, val in post_data.items():
                if hasattr(case_ques, key):
                    setattr(case_ques, key, val)
            case_ques.save()
        return Response('ok')

对于多个数据库,并且存在一对多关联

举例: 一个问题可以关联多个选项, 当编辑此问题时,不仅修改了原来的选项, 并且添加了新的选项

    def update_question(self, request):
        """
        修改问题
        """
        logger.info("request.data is : {}".format(dict(request.data)))
        # 选项列表
        option_list = request.data.pop("options")
        # 问题的id
        question_id = request.data.pop("id")

        update_data = dict(request.data)
        with transaction.atomic():
            Question.objects.filter(id=question_id).update(**update_data)

            # 修改对应选项
            for option in option_list:
                _id = option.get("id")
                if _id:
                    Option.objects.filter(id=_id).update(**option)
                else:
                    option['question_id'] = question_id
                    Option.objects.create(**option)
        return Response("Success")
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值