Django中的create_or_get方法

Mri*_*lla 2 python django django-models

我在看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)
Run Code Online (Sandbox Code Playgroud)

我应该在模型中还是在管理器中放置此方法?

And*_*Dog 11

已经有get_or_create,用作:

obj, created = MyModel.objects.get_or_create(keywordArguments)
Run Code Online (Sandbox Code Playgroud)

  • 如果我确实希望它首先尝试创建,以在 99% 的查询上保存 SELECT,而我知道这些查询大部分会在 SELECT 上丢失,该怎么办? (2认同)