3

私は異常な問題を抱えています。私の django アプリケーションでは、シグナルを使用してメールを送信しています。django-admin コマンド (manage.py を介して実行される django.core.management.base.NoArgsCommand) から発せられるシグナルを除いて、すべてのシグナルが機能します。

さまざまな場所で信号を確認しましたが、この場所以外では機能しています。

シグナルを送信するコードは次のとおりです。

from django.core.management.base import NoArgsCommand

class Command(NoArgsCommand):
    help = "Send email advertisement expiration reminder to users"

    def handle_noargs(self, **options):
        from app.models import Advertisement, User
        from app.signals import ad_expires
        from datetime import datetime
        start=datetime(datetime.now().year, datetime.now().month, datetime.now().day+4,0,0)
        end=datetime(datetime.now().year,datetime.now().month,datetime.now().day+4,23,59)
        ads=Advertisement.objects.filter(visible_till__gte=start).filter(visible_till__lte=end)
        for ad in ads:
            ad_expires.send(self,ad=ad, user=ad.user)
        print "Expiration reminders sent to %s users" % len(ads)

私は何か間違ったことをしていますか?

また、1日以内に日付を確認する簡単な方法はありますか?

アドバイスありがとうございます

4

2 に答える 2

2

ショートカットは次のとおりです。

start = datetime.now() + timedelta(days=4)
end = start + timedelta(days=1)
ads=Advertisement.objects.filter(visible_till__gte=start).filter(visible_till__lt=end)

プロジェクト構造をここに投稿できますか? あなたのコードは私には良さそうです。

于 2011-03-06T06:27:34.873 に答える
1

私が考えることができる唯一のことは、シグナルハンドラーが django-admin 関数の実行時に登録されていないことです。これは、リスナーの前にprintステートメントを付けて管理コマンドを実行することで確認できます。

app/__init__.pyシグナルリスナーをファイルに入れてみてください。appパッケージにアクセスしているので、すべて__init__.pyが実行され、リスナーが登録されます。

于 2011-03-06T08:09:26.777 に答える