Mongoengine 获取最新记录()
在Django中,如果我使用MongoEngine,怎么获取查询集的最新实例呢?
通常我们会这样做:
Users.objects.latest('id')
但是我在MongoEngine中不能使用latest
。
我现在有点卡住了。
我在这里没有找到解决方案,不过我自己实现了。你觉得下面的做法怎么样?
Users.objects.all().order_by('-id').limit(1)[0]
这样可以返回最新的实例。
而且通过提交到MongoEngine解决了这个问题。
https://github.com/anishmenon/mongoengine/
你可以安装这个并使用:
Users.objects.latest('id')
2 个回答
6
罗斯的回答已经很不错了。
不过如果你真的需要一个 latest()
方法,自己实现一个自定义的查询集是可以做到的。
“装饰器”方式:
class Users(Document):
username = StringField()
@queryset_manager
def latest(doc_cls, queryset):
return queryset.order_by('-id').first()
“元”方式:
class UsersQuerySet(QuerySet):
def latest(self):
return self.order_by('-id').first()
class Users(Document):
meta = {'queryset_class': UsersQuerySet}
现在你可以:
Users.objects.latest()
# or
Users.latest()
25
你可以这样做:
Users.objects.order_by('-id').first()