【问题标题】:How to update/add data to Django application without deleting data如何在不删除数据的情况下更新/添加数据到 Django 应用程序
【发布时间】:2014-07-13 02:47:14
【问题描述】:

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

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

Building.objects.all().delete()
call_command('loaddata', os.path.join(temp_dir, 'data.json'))

我的问题是所有数据都被删除然后重新添加。我需要找到一种方法来更新和添加数据,而不是删除数据。

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

【问题讨论】:

  • 您如何确定何时应该更新或添加记录?
  • @schillingt 在我们的 csv 文件中,有两个字段将被更新(IP 和端口)和其他永远不会更新的字段(建筑物编号、建筑物名称、楼层、房间等) .如果新记录建筑物编号等已在数据库中,但 IP 和端口不同,我们将进行更新。如果建筑物编号等不存在,我们将添加。很好的问题
  • 如果像这个答案一样将 pk 设置为 null 会发生什么? stackoverflow.com/a/1505083/1637351

标签: python json django


【解决方案1】:

如果你遍历你的数据,你可以使用get_or_create(),如果它存在,这将返回对象,如果不存在则创建它:

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

【讨论】:

  • 这看起来像我需要的,直到星期二我才有机会测试它,但感谢您的快速回复。
  • 顺便说一句,我在这里对这个问题进行了跟进:stackoverflow.com/questions/23897349/…
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-03-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-11-20
  • 2017-09-23
  • 2017-12-12
相关资源
最近更新 更多