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:强制插入