我必须在 django 模板中渲染 models.DateField() 的值以实现倒计时功能。对于 DateField,我将在 django admin 中添加该值,并且我需要在前端中添加该值。我尝试通过写入来访问该值obj.field(DateField)
,但它不会呈现该值。请看下面的代码,您就会很容易理解。任何帮助将不胜感激。
我有一个这样的模型:
class FeaturedProduct(BaseModel):
type = models.CharField(max_length=255, choices=ProductTypeChoices.choices)
product = models.ForeignKey(Product, on_delete=models.CASCADE, null=True, blank=True, related_name='featured_products')
daily_deal_countdown = models.DateField(blank=True, null=True)
class Meta:
unique_together = ('type', 'product')
def __str__(self):
return str(self.product) + '-' + str(self.type)
在视图上下文中,我传递 daily_deals 如下:
daily_deal = Product.objects.filter(featured_products__type=ProductTypeChoices.DAILY_DEAL)
context = {'daily_deal':daily_deal}
在模板中我渲染如下:
{% for product in daily_deal %}
<div class="daily-deal-countdown" data-countdown-date="{{ product.daily_deal_countdown }}"></div>
{% endfor %}
在上面的模板中,daily_deal_countdown
即使我的后端有该值,该字段的值也没有显示任何内容。
我在 javasript 中使用 data-countdown-date 值。当我控制台记录该值时,它什么也没显示。
我还尝试像这样渲染元素中的值:
<div class="daily-deal-countdown">{{ product.daily_deal_countdown }}</div>
但它什么也没显示。
请帮我渡过难关。
看起来您正在将
Product
对象传递给模板,而包含的模型daily_deal_countdown
是FeaturedProduct
. 所以你有两个选择:daily_deal: FeaturedProduct.objects.filter(type=ProductTypeChoices.DAILY_DEAL)