Django:从ID列表中获取一组对象(并按时间戳排序)

时间:2012-03-23 20:14:38

标签: python database django model django-queryset

我有一个我需要抓取的对象的ID列表,然后我必须按时间戳对它们进行排序。这就是我要做的事情:

For i in object_ids:
  instance = Model.objects.get(id = i)
  # Append instance to list of instances 

#sort the instances list

但有两件事让我困扰:

  • 是否无法通过其ID列表获取条目集合 - 无需循环?
  • 我可以根据他们的ID将任意对象附加到QuerySet吗?

谢谢,

2 个答案:

答案 0 :(得分:22)

这可以使用这样的代码来完成:

objects = Model.objects.filter(id__in=object_ids).order_by('-timestamp')

order_by可以是正数或负数timestamp,具体取决于您希望如何排序。

答案 1 :(得分:8)

尝试以下方法:

result = Model.objects.filter(id__in=object_ids)

这将返回在Model的给定列表中具有id的所有object_ids个对象。这样,您也不需要将其他模型附加到生成的QuerySet中。