我有一个名为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})