将对象转换为查询集

时间:2018-10-22 08:01:38

标签: django django-queryset

我有两个功能

def xyz(obj):
   obj_queryset = Sample.objects.filter(id=obj.id)
   callfunction(obj_queryset)

def callfunction(obj_queryset):
   for obj in obj_queryset:
       obj.start_date = datetime.date.today()
       obj.end_date = datetime.date.today()
       obj.save()

出于某些原因,我需要将其作为查询集,因为我想更新多个对象,并且在更新之前我也进行了一些计算,因此我不会在此处发布。

是否可以在不执行数据库查询的情况下将obj转换为查询集。

1 个答案:

答案 0 :(得分:0)

callfunction不使用queryset中的任何特定内容。它将其自变量视为序列iterable。实际上,这意味着您可以在for循环中使用的任何内容都可以传递给该函数。

为了通过此函数处理单个对象,您可以将带有该对象的序列传递给函数,并且它可以是可迭代的任何序列(不一定是queryset),例如,它可以是列表:

callfunction([obj])

这是绝对有效的,并且是通常的python习惯用法。