python - 一对多关系上的 UpdateOrCreate
问题描述
更新
我正在尝试update_or_create
在父表上应用方法。然后在子表上。但是当该update_or_create
方法在孩子上运行时,会返回此错误...
禁止 save() 以防止由于未保存的相关对象“atom_presance”而导致数据丢失。
看起来孩子不知道父母的update_or_create
,也无法获得foreign_key。
for i, fee in enumerate(fees):
for j, item in enumerate(fee):
projects = AtomPresance() #parent
advertisements = Advertisements() #child
project_name = {'project_name': item["title"]}
kind = item["kind"]
removed_price = {'removed_price': item[kind], "atom_presance":projects} #sending FOREIGN_KEY also
obj, created = AtomPresance.objects.update_or_create(project_name=item["title"], defaults=project_name)
obj, created = Advertisements.objects.update_or_create(saved_date=date, defaults=removed_price)
update_or_create
在这种情况下,对父母和孩子使用的最佳方法是什么。
解决方案
update_or_create
当您将默认值中的第二种方法分配removed_price
为第一个创建对象之后的字典并在
字典中AtomPresance
分配键值时,我得到了错误atom_presance=obj
removed_price
您必须在子模型创建中传递父模型的引用,用您的代码替换下面的代码
for i, fee in enumerate(fees):
for j, item in enumerate(fee):
project_name = {'project_name': item["title"]}
kind = item["kind"]
obj, created = AtomPresance.objects.update_or_create(project_name=item["title"], defaults=project_name)
removed_price = {'removed_price': item[kind], "atom_presance":obj} #here change you need to assign the created obj that we create in above line
obj, created = Advertisements.objects.update_or_create(saved_date=date, defaults=removed_price)
推荐阅读
- kubernetes - k8s 网络策略阻止 DNS
- node.js - 为什么我会看到来自同一个 socket.io 客户端的重复 https 请求?
- json - Illustrator 2021 角色面板
- ssh - 为自动登录设置多个用户名
- sql - 如果 postgres 触发器将按“位置”列重新排序行,可能会出现什么问题?
- r - 如何将作为字典的数据框列拆分为两列
- python - AttritubeError:使用 .apply() 到 dataFrame 时,list' 对象没有属性 'map'
- r - 如何在迭代期间获取权重值并在 R 中绘制轨迹图
- kubernetes - 如何修改 OpenShift 镜像注册表部署?
- svg - 如何计算 svg feGaussianBlur 的大小