迹忆客 专注技术分享

当前位置:主页 > 学无止境 > 编程语言 > 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 进行申请,经作者同意之后,转载请以链接形式注明出处

本文地址:

相关文章

Pandas read_csv()函数

发布时间:2024/04/24 浏览次数:254 分类:Python

Pandas read_csv()函数将指定的逗号分隔值(csv)文件读取到 DataFrame 中。

Pandas 追加数据到 CSV 中

发布时间:2024/04/24 浏览次数:352 分类:Python

本教程演示了如何在追加模式下使用 to_csv()向现有的 CSV 文件添加数据。

Pandas 多列合并

发布时间:2024/04/24 浏览次数:628 分类:Python

本教程介绍了如何在 Pandas 中使用 DataFrame.merge()方法合并两个 DataFrames。

Pandas loc vs iloc

发布时间:2024/04/24 浏览次数:837 分类:Python

本教程介绍了如何使用 Python 中的 loc 和 iloc 从 Pandas DataFrame 中过滤数据。

扫一扫阅读全部技术教程

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

最新推荐

教程更新

热门标签

扫码一下
查看教程更方便