如何在模板中打印每个产品过期日期和今天日期之间的天数//django视图和html模板



我有一个名为product的模型,其中我有过期日期作为DateFiled,我需要计算所有产品的过期天数,并显示产品名称和每个产品的过期天数。


class Product(models.Model):
category = models.ForeignKey('store.Category',on_delete=models.CASCADE,default='SYRUP')
itemname = models.CharField(max_length=50,blank=True,null=True)
itemexpdate = models.DateField(auto_now_add=False, auto_now=False,blank=True,null=True)
class Category(models.Model):
name = models.CharField(max_length=200,blank=True)

def days_left_for_expiry(expiry_date):
today = date.today()
expiry = expiry_date
delta = expiry - today
return str(delta.days)
def home(request):
d = Product.objects.all()
for product in d:
expiry_date = product.itemexpdate
days_left= days_left_for_expiry(expiry_date)
return render(request,'store/dashboard.html',{'days_left':days_left})

{% for i in d %}    

<tr>                    
<td>{{ i.itemname }}</td>
<td>{{ i.itemexpdate }}</td>
<td><b>{{days_left}}</b></td>
</tr>
{% endfor %}

output:
image attached
[enter image description here][1]

[1]: https://i.stack.imgur.com/CU1UZ.png

在Product模型上创建一个property:

class Product(models.Model):
category = models.ForeignKey('store.Category',on_delete=models.CASCADE,default='SYRUP')
itemname = models.CharField(max_length=50,blank=True,null=True)
itemexpdate = models.DateField(auto_now_add=False, auto_now=False,blank=True,null=True)
@property
def days_left(self) -> str:
today = date.today()
expiry = self.itemexpdate
delta = expiry - today
return str(delta.days)

你可以从模板内部访问它:

{% for i in d %}             
<tr>                    
<td>{{ i.itemname }}</td>
<td>{{ i.itemexpdate }}</td>
<td><b>{{ i.days_left }}</b></td>
</tr>
{% endfor %}
注意,您还需要通过上下文将Product查询集传递给模板:
def home(request):
d = Product.objects.all()
return render(request,'store/dashboard.html',{'d':d})

最新更新