【问题标题】:Can i do an order_by on day in month?我可以在每月的某天进行 order_by 吗?
【发布时间】:2011-10-09 19:34:28
【问题描述】:

我正在尝试创建一个按日期排序的生日列表,我的查询集是:

birth_days = get_list_or_404(UserProfile.objects.order_by('-birthDate'), birthDate__month=datetime.datetime.now().month)

我怎样才能得到按月中的一天排序的列表,所以出生天数列表将被排序,现在它是按所有日期排序的,所以如果两个人本月有一个生日并且第一个日期是假设 1980 年 7 月 20 日,第 2 个人的日期是 1970 年 7 月 7 日,第 2 个人仍将在列表中的第 1 个人之后。我不关心出生年份,只关心月份和月份中的哪一天......

我可以按顺序做这样的事情吗:

order_by('-birthDate__day')

我知道我不能这样做,因为这不起作用,只是询问是否有办法做到这一点(在视图中,在这种情况下不在模型中......不是我认为这很重要在这里,只是说)?

谢谢你, 埃雷兹

【问题讨论】:

    标签: python django django-views django-queryset


    【解决方案1】:

    您可以将日期提取为“额外”字段,然后对其进行排序,例如:

    UserProfile.objects.select(extra={'birth_day': 'extract(day from birthDate)'}).order_by('-birth_day')
    

    这至少应该适用于 PostgreSQL。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-02-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-12-08
      相关资源
      最近更新 更多