导入功能中的 update_or_create
Posted
技术标签:
【中文标题】导入功能中的 update_or_create【英文标题】:update_or_create in import feature 【发布时间】:2020-11-04 23:47:47 【问题描述】:我正在以 json 格式数据从外部源导入数据。我在 Person 模型中获取和保存数据,我想更新已经存在的模型,所以我使用 update_or_create 方法,但在导入过程中出现错误:
django.db.utils.IntegrityError: UNIQUE constraint failed: managment_person.person_id
.
person_id
必须是唯一的。
模型人
class Person(models.Model):
person_id = models.PositiveIntegerField(unique=True)
code = models.CharField(max_length=255)
name = models.CharField(max_length=255)
def __str__(self):
return self.name
这是为 Person 模型导入数据的函数:
def get_persons(self):
r = requests.get('https://path_to_data_in_json')
for obj in r.json()['data']:
person, created = Person.objects.update_or_create(person_id=obj['id'], code=obj['code'], name=obj['name'])
【问题讨论】:
【参考方案1】:来自有关update_or_create的文档
update_or_create 方法尝试从数据库中获取对象 基于给定的 kwargs。如果找到匹配项,它会更新字段 在默认字典中传递。
obj, created = Person.objects.update_or_create( first_name='John', last_name='Lennon', defaults='first_name': 'Bob', )
你应该相应地编辑你的默认值
【讨论】:
以上是关于导入功能中的 update_or_create的主要内容,如果未能解决你的问题,请参考以下文章