这对我来说没有明显的意义。正如您在下面的代码中看到的,我从 django 中的各种页面上下文对象中提取客户订阅数据。正如您在附加的屏幕截图中看到的那样,变量有效,并且(除非 django 模板变量值是类型转换的?)这些值实际上是匹配的。
根据 if 条件,当页面加载时,客户(用户对象)的现有订阅应该被归类为“活动”,但事实并非如此?
<div class="card-deck">
{% for product in products %}
request.user.is_paysubscribed = {{ request.user.is_paysubscribed }}<br />
product.metadata.tier = {{ product.metadata.tier }}<br />
<div class="card mb-4">
{% for price in product.plan_set.all %}
<div class="card-body{% if request.user.is_paysubscribed == product.metadata.tier %} active"{% else %}"{% endif %} id="{{ product.name|slugify }}-card" role="button" onclick="planSelect('{{ product.name|slugify }}-card', '{{ product.name }}', '{{ price.human_readable_price }}', '{{ price.id }}')">
<h5 class="card-title text-center"><label for="{{ product.name }}">redacted product name</label></h5>
<p class="text-center">{{ price.human_readable_price }}</p>
<p class="card-text">{{ product.description }}</p>
</div>
{% endfor %}
</div>
{% endfor %}
</div>
答案 0 :(得分:0)
tl;dr:值是类型转换的。在我的例子中,user.is_paysubscribed
是数据库中的一个 int 字段,而 product.metadata.tier
只是添加到 Stripe 产品的自由格式字段中的额外内容,因此(可能)作为字符串返回。
在对类似问题的回复中找到了将它们都转换为整数的解决方案:
https://stackoverflow.com/a/36808765/7488096
django 中的 |(math):value
过滤器将值重新转换为 int。
因此,|add:"0"
使它们都是整数,然后进行比较。