导入功能中的 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的主要内容,如果未能解决你的问题,请参考以下文章

Visual Studio Code 中的打字稿是不是有自动导入功能?

导入功能中的 update_or_create

将Rcpp头文件导入NAMESPACE中的R包中

EasyPoi导入验证功能

利用VBA如何将批量图片导入WORD的指定表格格式里?

利用VBA如何将批量图片导入WORD的指定表格格式里?