Django中的create_or_get方法

4 投票
1 回答
2195 浏览
提问于 2025-04-16 11:44

我在找Django有没有什么类似于create_or_get的方法,但看起来是没有的。我想要这个方法的目的是,如果记录不存在,就创建一个;如果已经存在,就返回这个记录。

我自己写了一个,下面是它的样子:

def create_or_get(self, url):
    try:
        return Host.objects.create(url = url)
    except IntegrityError, e:
        return Host.objects.get(url = url)

我应该把这个方法放在哪里呢?是在模型里还是在管理器里?

1 个回答

11

已经有一个叫做 get_or_create 的功能,可以这样使用:

obj, created = MyModel.objects.get_or_create(keywordArguments)

撰写回答