0
私は2モデル:Subscriber
とNotification
を持っています。私が取得したい何Djangoは関連値に基づいて選択して注文します
class Subscriber(models.Model):
email = models.CharField()
class Notification(models.Model):
subscriber = models.ForeignKey(Subscriber, related_name='notifications')
timestamp = models.DateTimeField(default=timezone.now)
type = models.SmallIntegerField(choices=TYPES)
は最後の5分以内(type
に基づく)の通知を受け、彼らは最後の昇順受信した時刻で注文していなかった加入者です。
おそらくSQL内でサブクエリなどでこれを解決できますが、Djangoで実行可能かどうかは疑問です。
はここで私は必要なものを行い作業SQLクエリです:
SELECT
s.*
FROM
subscribers s
LEFT JOIN
notifications n
ON(n.subscriber_id = s.id)
WHERE
(
(NOT EXISTS
(
SELECT
NULL
FROM
notifications nn
WHERE
nn.subscriber_id = s.id
)
OR
(
n.type = 1
AND n.timestamp < Curdate() - INTERVAL 5 minute
)
)
)
ORDER BY
pu.timestamp ASC