Django的ORM一些常用的小知识点

Django的ORM一些常用的小知识点

  1. get_or_create【获取数据, 有就查询返回, 没有则创建返回item】

    item, flag = DashboardConfig.objects.get_or_create(  # 存在有用户未创建默认的分享文件夹
                                    defaults={
                                        "classify": 3,
                                        "create_user": work_id,
                                        "update_user": work_id,
                                        "menu_id": MENU_ID[-1],
                                        "name": "共享给我的看板"
                                    },
                                    create_user=work_id,
                                    classify=3,
                                    status=1)
                    share_dashboards.append(item)
    
  2. update_or_create【有就更新, 没有则创建新的item】

    from django.db import transaction  # 需要用到事务
    
    
    for item in dashboard_items:
                with transaction.atomic():
                    save_id = transaction.savepoint()
                    ShareDashboard.objects.update_or_create(
                        defaults={
                            "share_dashboard_id": item["id"],
                            "config": item["config"],
                            "dashboard_id":  trees["id"],
                            "work_id": self._user_id
                        },
                        status=1,
                        work_id=self._user_id,
                        dashboard_id=trees["id"],
                        share_dashboard_id=item["id"]
                    )
                    transaction.savepoint_commit(save_id)
    
  3. 批量插入

    create_items = []
                # 将看板分享的看板复制到ShareDashboard
                for item in share_dashboards:
                    create_items.append(ShareDashboard(
                        dashboard_id=item.id,
                        work_id=item.create_user,
                        share_dashboard_id=self._dashboard_id))
                ShareDashboard.objects.bulk_create(create_items)  # 批量插入
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小帆芽芽

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值