当前位置:  开发笔记 > 编程语言 > 正文

Queryset API distinct()不起作用?

如何解决《QuerysetAPIdistinct()不起作用?》经验,为你挑选了1个好方法。



1> Carl Meyer..:

你不需要distinct(),你需要的是聚合.此查询将执行您想要的操作:

from django.db.models import Max
Topic.objects.annotate(Max('message__pub_date')).order_by('-message__pub_date__max')

虽然这是生产代码,但您可能希望遵循akaihola的建议并直接将"last_message_posted"非规范化为Topic模型.

此外,Message.pub_date的默认值存在错误.正如您现在所拥有的那样,无论何时第一次运行服务器并加载此代码,datetime.now()都将执行一次,该值将用作所有Messages的pub_date.使用它代替传递callable本身,以便在创建每个Message之前不调用它:

pub_date = models.DateTimeField(default=datetime.now)

推荐阅读
路人甲
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有