gpt4 book ai didi

python - Django update_or_create(获取部分)使用相关对象作为 kwarg

转载 作者:太空宇宙 更新时间:2023-11-03 15:34:54 26 4
gpt4 key购买 nike

我正在执行 update_or_create 查询集操作,该操作在内部使用 get 查询集操作。我已经通读了有关 update_or_create 查询集方法的文档,但在理解与外键相关的部分以及将对象用作 kwargs 时遇到了一些困难。

考虑一个例子,我有模型 Book 和 Chapter 并且我做这样的事情:

book = Book.objects.get(...)

kwargs = {'book': book, 'name': 'Chapter 3'}
defaults = {'text': '...'}
Chapter.objects.update_or_create(defaults=defaults, **kwargs)

现在,kwargs 将在“get”方法中使用,以检查该章节是否存在。但是,既然书是一个对象,Django 怎么知道是否有章节与“匹配”的书呢?它是否检查书籍对象的所有字段是否匹配?它只检查唯一字段吗?只有书的主键?如果我有两本书,字段相同但主键不同,它们能匹配吗?以这种方式在 kwargs 中使用对象是好的做法,还是我冒着出现完整性错误问题的风险?谢谢。

最佳答案

在上下文中,我假设 Chapter 有一个 FK 到 Book

在那次追逐中,Django 将使用字段 ID,或者,如果您更改了默认设置,则使用书籍实例中的主键进行匹配。这与做的一样:

Chapter.objects.update_or_create(defaults=defaults, book=book.id)

所以你有数百本书,除了主键外,字段完全相同,django 将知道如何处理它。

关于python - Django update_or_create(获取部分)使用相关对象作为 kwarg,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55493678/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com