这是一个简单的问题,我想过滤两个按日期排序的元素。
模型是:
Class ModelName(models.Model):
usr = models.ForeignKey(UserProfile)
created = models.DateTimeField(default=datetime.datetime.now)
我这样做的方式是:
ModelName.object.filter(param=param).order_by('-created')[:2]
根据我的理解,我认为幕后发生的事情是:
ModelName中的所有对象都已过滤
对它们进行了分类
只选择其中两个。
也许我错了,如果没有,那我怎样才能根据日期过滤最后两个元素。
答案 0 :(得分:0)
- ModelName中的所有对象都已过滤
- 他们已分拣
- 只选择了其中两个。
是的,但这是由数据库完成的,而不是由python完成的。见querysets are lazy。所以,这真的很有效,因为所有这些python:
qs = ModelName.object.filter(param=param).order_by('-created')[:2]
访问qs记录时将转换为SQL(即qs中的模型...)