1

アプリのテンプレート駆動型の期限切れ試用版を作成しようとしていますが、現在の方法が機能しない理由がわかりません。

ユーザーがサインアップすると、「無料試用版」という名前のプランで新しい顧客と current_subscription を作成します。

@receiver(user_signed_up)
def create_trial(sender, **kwargs):

    user = kwargs['user']
    customer = Customer.create(user)

    fn = settings.TRIAL_PERIOD_FOR_USER_CALLBACK
    days = fn(user)
    start = datetime.now()
    end = start + timedelta(days=days)
    sub = CurrentSubscription.objects.create(customer=customer,
                                             plan="free trial",
                                             quantity="1",
                                             status='trialing',
                                             trial_start=start,
                                             trial_end=end,
                                             start=start,
                                             current_period_end=end,
                                             amount=0)

ここに画像の説明を入力

次に、アプリの代わりに試用期間が終了したことをユーザーに知らせるメニューを表示するユーザーの計画を対象とする条件付きテンプレート タグがあります。

{% if not current_subscription.plan == 'free trial' or current_subscription.is_valid %}
# trial expiry stuff
{% endif %}

しかし、トライアルの有効期限が切れていて、プランの値が != 'free trial' である場合でも、私の条件は正しく評価されません。私のタグは間違っていますか?ありがとう

4

1 に答える 1

1

おそらくnot、2 つの条件に が適用されていると想定しているため、評価した条件は正しくありません。(その直後のブール値テストに適用されるだけです)

また、方法に問題がある可能性もありますis_valid。(コードを投稿して、確認できるようにします)

正しい条件ステートメントは次のとおりです。

{% if current_subscription.plan != 'free trial' or not current_subscription.is_valid %}
# trial expiry stuff
{% endif %}

その方がうまくいくはずです。

于 2013-07-15T17:19:41.843 に答える