1

そのため、私のDjangoプロジェクトでは、2つの日時フィールドを持つ通知モデルを作成しました。1つはタイムスタンプで、もう1つは期日です。期日は任意です。現在、通知のリストがあります。期限があるものとないものがあります。それらはすべてタイムスタンプを持っています。私がやろうとしているのは、そのフィールドがある通知の期日と、そのオプションのフィールドがない通知のタイムスタンプを使用して、リストでそれらを並べ替えることです。ご覧のとおり、2つのフィールドをキーとして使用しているのは奇妙なことですが、どちらも日時フィールドです。だから私は彼らが比較できるはずだと思います。

私のコード:

class Notifications(models.Model):
date = models.DateTimeField(auto_now=True)
title = ...
content = ...
due_date = models.DateTimeField(null=True, blank=True)
4

1 に答える 1

2

SQLを使用したいCOALESCE

このCOALESCE関数はパラメーターのリストを受け入れ、リストから最初の非Null値を返します。

djangoの集計関数はないと思いますが、次のことができます。

Notifications.objects.filter(**some_filter_args)
  .extra(select={"sortdate" : 'COALESCE("due_date", "date")'})
  .order_by("-sortdate") 
于 2012-08-02T22:58:57.403 に答える