Start DateTimeField and End DateTimeField duration time显示价格.



我将从Admin Panel输入开始DateTimeField和结束DateTimeField

当启动时间与now()匹配时,将显示报价。

当当前时间匹配开始DateTimeField时,价格将显示为HTML。

同样,当结束DateTimeField与当前时间匹配时,报价将从HTML表单显示为OFF。

我的模型:

class Product(models.Model):
price               = models.DecimalField(max_digits=6, decimal_places=2)
offer_price         = models.DecimalField(max_digits=6, decimal_places=2)
duration            = models.DurationField('duration')
offer_price_start_date   = models.DateTimeField(blank=True, null=True)
offer_price_end_date     = models.DateTimeField(blank=True, null=True)
def duration(self):
return self.offer_price_end_date - self.offer_price_start_date

我的观点:

def product_detail(request):
product_data = Product.objects.all()
context = {
'product': product_data 
}

return render(request, 'show.html', context)

我的模板show.html

{% if product.duration %}
<a>    
Before Price ${{ product.price }}             
</a>                                            
<a> 
Now ${{ product.offer_price }}            
</a>  
{% endif %}

您可以在模板中添加当前日期作为变量(像文档建议的那样使用timezone.now()):

from django.utils import timezone as tz
def product_detail(request):
context = {
'current_time': tz.now(),
'product_list': Product.objects.all(),
}

return render(request, 'show.html', context)

,然后在模板中使用该变量进行过滤;下面的代码显示了所有产品的价格,另外,对于那些具有当前有效优惠的产品,也显示了优惠价格。

{% for p in product_list %}
<a>    
Price ${{ p.price }}             
</a>                                            
{% if p.offer_price_start_date <= current_time <= p.offer_price_end_date %}
<a> 
Offer price ${{ p.offer_price }}            
</a>  
{% endif %}
{% endfor %}

那解决你的问题了吗?

相关内容

  • 没有找到相关文章