我正在尝试在父表上应用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
的最佳方法是什么。
答案 0 :(得分:1)
当您使用update_or_create
作为默认方法的第二种方法时,我出错了,将removed_price
分配为第一次创建后的字典
AtomPresance
个对象,并在atom_presance=obj
词典的removed_price
中分配键值
您必须在创建子模型时传递parentmodel的引用,并用代码替换下面的代码
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)