【问题标题】:update_or_create in import feature导入功能中的 update_or_create
【发布时间】: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'])

【问题讨论】:

    标签: python json django api django-queryset


    【解决方案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'},
    )
    

    你应该相应地编辑你的默认值

    【讨论】:

      猜你喜欢
      • 2021-05-09
      • 1970-01-01
      • 2017-01-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-08-30
      • 1970-01-01
      • 2021-11-29
      相关资源
      最近更新 更多