3

Django アプリケーションでモデルの期限切れのオブジェクトをすべて取得しようとしています。

モデルは次のようになります。

MyModel(models.Model):
    owner = models.ForeignKey(User)
    last_check = models.DateTimeField(blank=True, null=True)
    interval = models.IntegerField(default=1800)

オブジェクトを再度チェックする必要があるかどうかを判断するために、last_check が現在よりチェック間隔を引いた時間よりも前の一致するすべてのオブジェクトを取得する必要があります。

静的間隔を使用しても問題ありません。

time_diff = datetime.now() - timedelta(seconds=1800)
MyModel.object.filter(last_check__lte=time_diff)

しかし、間隔がモデル自体にある場合、その方法がわかりません。これは私が試したものです:

objects_to_check = MyModel.objects.filter(
                                        last_check__isnull=False
                                    ).filter(
                                        last_check__lte=datetime.now() - timedelta(seconds=F('interval'))
                                    )

しかし、それはまったく機能しませんでした。次のエラーのみが表示されました

unsupported type for timedelta seconds component: F

これを解決する方法はありますか?

4

3 に答える 3

-1

この種のクエリのサポートは現在進行中です: http: //code.djangoproject.com/ticket/10154

于 2010-09-13T14:39:58.750 に答える