Django的ORM一些常用的小知识点
-
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)
-
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)
-
批量插入
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) # 批量插入