Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/341.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何在不删除数据的情况下向Django应用程序更新/添加数据_Python_Json_Django - Fatal编程技术网

Python 如何在不删除数据的情况下向Django应用程序更新/添加数据

Python 如何在不删除数据的情况下向Django应用程序更新/添加数据,python,json,django,Python,Json,Django,现在,我有一个带有导入功能的Django应用程序,它接受.zip文件,读取csv文件并将其格式化为JSON,然后将其插入数据库。包含所有数据的JSON文件被放入temp_dir,称为data.JSON 不幸的是,插入是这样完成的: Building.objects.all().delete() call_command('loaddata', os.path.join(temp_dir, 'data.json')) 我的问题是,所有数据都被删除,然后重新添加。我需要找到一种方法来更新和添加数据

现在,我有一个带有导入功能的Django应用程序,它接受
.zip
文件,读取csv文件并将其格式化为JSON,然后将其插入数据库。包含所有数据的JSON文件被放入
temp_dir
,称为
data.JSON

不幸的是,插入是这样完成的:

Building.objects.all().delete()
call_command('loaddata', os.path.join(temp_dir, 'data.json'))
我的问题是,所有数据都被删除,然后重新添加。我需要找到一种方法来更新和添加数据,而不是删除数据


我一直在看其他的,但我似乎无法找到允许我插入数据和更新/添加记录的方法。我希望有一种简单的方法可以做到这一点,而无需修改整批数据。

如果您循环使用您可以使用的数据,这将返回对象(如果存在),如果不存在,则创建对象:

obj, created = Person.objects.get_or_create(first_name='John', last_name='Lennon', defaults={'birthday': date(1940, 10, 9)})

可能是这样的,您如何确定何时更新记录而不是添加记录?@schillingt在我们的csv文件中,有两个字段将被更新(IP和端口),而其他字段将永远不会更新(建筑编号、建筑名称、楼层、房间等)。如果数据库中已经有新的记录楼编号等,但IP和端口不同,我们将进行更新。如果建筑编号等不存在,我们将添加。非常好的问题如果你像这个答案一样将pk设置为null会发生什么?这看起来像是我需要的,直到周二我才有机会测试它,但是谢谢你的快速回复。顺便说一句,我在这里跟进了这个问题: