jdango中ORM报错:ValueError: save()prohibited to prevent data loss due to unsaved related object ‘user‘.

文章讲述了在Django框架中,当尝试在User和UserInfo表之间插入外键关联数据时遇到的错误。解决方法是确保在创建UserInfo之前先调用User对象的save方法,以防止因未保存相关对象导致的数据丢失。
摘要由CSDN通过智能技术生成

1、问题概述?

在django框架中测试外键数据插入的时候报错提示。

在案例中创建了两张表,一张User表存储用户信息,一张UserInfo存储用户详情信息。

执行如下代码报错:

user1=User(username='scott',password='123456')   

UserInfo.objects.create(user=user1,real_name='xiaochun',)

解决办法其实很简单:

先还行user1.save(),在执行create操作。

也就是先把用户信息保存到user表,在吧userinfo信息保存到userinfo表中。

>>> user1=User(username='scott',password='123456')   

>>> user1.save()
>>> UserInfo.objects.create(user=user1,real_name='xiaochun',)

报错信息:

>>> UserInfo.objects.create(user=user1,real_name='xiaochun',) 
    return getattr(self.get_queryset(), name)(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\Administrator\AppData\Local\Programs\Python\Python311\Lib\site-packages\django\db\models\query.py", line 658, in create
    obj.save(force_insert=True, using=self.db)
  File "C:\Users\Administrator\AppData\Local\Programs\Python\Python311\Lib\site-packages\django\db\models\base.py", line 778, in save
    self._prepare_related_fields_for_save(operation_name="save")
  File "C:\Users\Administrator\AppData\Local\Programs\Python\Python311\Lib\site-packages\django\db\models\base.py", line 1093, in _prepare_related_fields_for_sav
e
    raise ValueError(
ValueError: save() prohibited to prevent data loss due to unsaved related object 'user'.

2、问题分析?

 

ValueError:save()被禁止,以防止由于未保存的相关对象“user”而导致数据丢失。

从这个query.py配置能够发现,user1对象需要被强制执行save动作。

force_insert:强制插入

0eed2e8342274f5d8f7fd0084d2d4a05.png

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

雾林小妖

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

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

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

打赏作者

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

抵扣说明:

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

余额充值