仅过滤django模型中的n个元素

时间:2012-04-02 12:37:31

标签: python django django-models

这是一个简单的问题,我想过滤两个按日期排序的元素。

模型是:

Class ModelName(models.Model):
    usr = models.ForeignKey(UserProfile)
    created = models.DateTimeField(default=datetime.datetime.now)

我这样做的方式是:

ModelName.object.filter(param=param).order_by('-created')[:2]

根据我的理解,我认为幕后发生的事情是:

  1. ModelName中的所有对象都已过滤

  2. 对它们进行了分类

  3. 只选择其中两个。

  4. 也许我错了,如果没有,那我怎样才能根据日期过滤最后两个元素。

1 个答案:

答案 0 :(得分:0)

  
      
  • ModelName中的所有对象都已过滤
  •   
  • 他们已分拣
  •   
  • 只选择了其中两个。
  •   

是的,但这是由数据库完成的,而不是由python完成的。见querysets are lazy。所以,这真的很有效,因为所有这些python:

qs = ModelName.object.filter(param=param).order_by('-created')[:2]

访问qs记录时将转换为SQL(即qs中的模型...)