gpt4 book ai didi

python - Django "update_or_create"API : how to filter objects by created or updated?

转载 作者:行者123 更新时间:2023-11-28 20:18:06 32 4
gpt4 key购买 nike

因此,我正在使用 Django update_or_create API 来构建我的表单数据。它工作正常...但是,一旦构建,我需要一种方法来检查哪些配置文件实际更新了或者它们是否是第一次创建的?

举个例子:

    for people in peoples:
people, updated = People.objects.update_or_create(
id=people.person_id,
defaults={
'first_name': people.first_name,
}
)

过滤查询集:

   people = People.objects.filter(
id__in=whatever,
)

但是,现在,我正在尝试通过创建或更新来过滤查询集...但是没有看到用于该操作的 API(例如,各种筛选器)

所以,我想做这样的事情:

updated = Person.objects.filter(updated=True, created_for_first_time=False)

and then I can write something like

if updated:
do this
else:
do this

基本上,我只想检查配置文件是否已更新或首次创建。

最佳答案

正如您在问题中所展示的,update_or_create 方法返回一个元组 (obj, created),其中对象中的 objcreated 是一个 bool 值,表示是否创建了新对象。

您可以检查 bool 字段的值,并创建一个列表来存储新创建的对象的 id

new_objects = []
for people in peoples:
obj, created = People.objects.update_or_create(...)
if created:
new_objects.append(obj.id)

然后您可以使用该列表进行过滤:

new_people = People.objects.filter(id__in=new_objects)
existing_people = People.objects.exclude(id__in=new_objects)

关于python - Django "update_or_create"API : how to filter objects by created or updated?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37972697/

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