Django App中的条件试用期限

时间:2013-07-15 17:03:56

标签: python django django-templates

我正在尝试为应用创建模板驱动的到期试用版,而且我不确定为什么我当前的方法不起作用。

当用户注册时,我创建了一个新客户和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)

enter image description here

然后我有一个条件模板标记,目标用户计划调出一个菜单,告诉用户他们的试用版已经过期而不是应用:

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

但即使试用期已过期且计划的价值!='免费试用'在db我的条件是没有正确评估。我的标签错了吗?感谢

1 个答案:

答案 0 :(得分:1)

您评估的条件不正确,可能是因为您认为not适用于您的两个条件。 (虽然它只适用于直接跟随它的布尔测试)

您可能还会遇到is_valid方法的问题。 (发布其代码,以便我们检查出来)

这是正确的条件陈述:

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

这应该会更好。