迹忆客 专注技术分享

当前位置:主页 > 学无止境 > 编程语言 > Python >

避免在 Django 中创建重复对象

作者:迹忆客 最近更新:2023/05/04 浏览次数:

本文将解决 Django 中的 get_or_create() 方法。 一种用于避免查询集中出现冗余字段的方法。


在 Django 中使用 get_or_create() 方法

在 Django 中,我们有一种方法可以避免使用 get_or_create() 方法定义 get 或 create 代码。 当我们多次创建重复对象时,这种方法可以帮助我们避免多次创建它们。

try:
    friend = Friend.objects.get(name='Harry jeams')
except DoesNotExist:
    friend = Friend(name='Harry jeams')
    friend.save()

在这个块中,当我们从查询集中得到一个朋友对象时,假设我们找不到这个对象,然后我们尝试创建这个对象。 如果我们要收到多个同时执行其他指令的请求,这看起来就像是一场比赛。

该过程可能会引发异常,因为查询集中不存在任何对象,因为已创建多个重复对象导致线程化。

我们有一种有效的方式来正确使用 get_or_create 方法,并且该方法通过一次操作即可快速响应。

friend,friend_to_friend = Friend.objects.get_or_create(name='Harry jeams')

get_or_create() 方法所做的第一件事是尝试使用 get() 方法获取一个对象。 不幸的是,如果第一次尝试获取对象失败,它将在我们的查询集中创建一个对象。

如果输出显示“IntegrityError”,它只会获取一个对象并返回它。 如果两个进程同时执行并获得处理和尝试创建对象的指令,则两者都将创建将成为我们查询集中的重复对象的对象。

由于这会创建重复项,因此我们需要模型字段中的唯一对象。

class Friend(models.Model):
    friend_first_name = models.CharField(max_length=255)
    friend_last_name = models.CharField(max_length=255)

friend, friend_to_friend = Friend.objects.get_or_create(first_name='Harry', last_name='jeams')

以下代码用于在查询集中获取和创建唯一对象。

代码示例:

class Friend(models.Model):
    friend_first_name = models.CharField(max_length=255)
    friend_last_name = models.CharField(max_length=255)

    class SubClass:
        unique = ('first_name', 'last_name')

friend, friend_to_friend = Author.objects.get_or_create(first_name='Harry', last_name='jeams')

Django 的 get_or_create() 函数返回两个变量。 第一个是对象,第二个是布尔变量。

有时我们只需要获取它返回的对象,所以我们使用这种语法。

句法:

friend, friend_to_friend = Friend.objects.get_or_create(name='Harry jeams', defaults={'list_of_friend': 0, 'place': 'college'})

如果我们的查询集中只有一个字段,我们可以使用 defaults__exact 代替 get_or_create() 方法中的默认参数。

转载请发邮件至 1244347461@qq.com 进行申请,经作者同意之后,转载请以链接形式注明出处

本文地址:

相关文章

Django 中的 Slug

发布时间:2023/05/04 浏览次数:173 分类:Python

本篇文章旨在定义一个 slug 以及我们如何使用 slug 字段在 Python 中使用 Django 获得独特的帖子。

Django ALLOWED_HOSTS 介绍

发布时间:2023/05/04 浏览次数:181 分类:Python

本文展示了如何创建您的 Django 网站,为公开发布做好准备,如何设置 ALLOWED_HOSTS 以及如何在使用 Django 进行 Web 部署期间修复预期的主要问题。

Django 中的 Select_related 方法

发布时间:2023/05/04 浏览次数:129 分类:Python

本文介绍了什么是查询集,如何处理这些查询以及我们如何利用 select_related() 方法来过滤 Django 中相关模型的查询。

在 Django 中上传媒体文件

发布时间:2023/05/04 浏览次数:198 分类:Python

在本文中,我们简要介绍了媒体文件以及如何在 Django 项目中操作媒体文件。

Django 返回 JSON

发布时间:2023/05/04 浏览次数:106 分类:Python

在与我们的讨论中,我们简要介绍了 JSON 格式,并讨论了如何借助 Django 中的 JsonResponse 类将数据返回为 JSON 格式。

在 Django 中创建对象

发布时间:2023/05/04 浏览次数:59 分类:Python

本文的目的是解释什么是模型以及如何使用 create() 方法创建对象,并了解如何在 Django 中使用 save() 方法。

在 Django 中为多项选择创建字段

发布时间:2023/05/04 浏览次数:75 分类:Python

在本文中,我们将着眼于为多项选择创建一个字段,并向您展示如何允许用户在 Django 中进行多项选择。

扫一扫阅读全部技术教程

社交账号
  • https://www.github.com/onmpw
  • qq:1244347461

最新推荐

教程更新

热门标签

扫码一下
查看教程更方便