1. ホーム
  2. python

[解決済み] Django のモデルを作成するか、存在する場合は更新する

2022-04-27 08:33:04

質問

Personのようなモデルオブジェクトを作りたいのですが、もしその人のidが存在しなければ、その人オブジェクトを取得することになります。

新しい人物を作成するコードは以下の通りです。

class Person(models.Model):
    identifier = models.CharField(max_length = 10)
    name = models.CharField(max_length = 20)
    objects = PersonManager()

class PersonManager(models.Manager):
    def create_person(self, identifier):
        person = self.create(identifier = identifier)
        return person

しかし、既存の人物オブジェクトを確認し、取得する場所がわかりません。

どのように解決するのですか?

update if exists else create"のユースケースをお探しでしたら、以下をご参照ください。 Zagsの素晴らしい回答


Djangoはすでに get_or_create , https://docs.djangoproject.com/en/dev/ref/models/querysets/#get-or-create

あなたにとって、それは:

id = 'some identifier'
person, created = Person.objects.get_or_create(identifier=id)

if created:
   # means you have created a new person
else:
   # person just refers to the existing one