Django - Как отобразить указанный c текст после того, как скидка больше не действует - PullRequest
1 голос
/ 05 мая 2020

Я работаю над проектом и хочу знать, как отображать «название» продукта и его «цену», когда истекает срок действия «Discount_price» и пока действует «Discount_price», я бы нравится отображать название продукта, цену и цену скидки.

models.py:

from django.db import models
from datetime import datetime

class Products(models.Model):
    name=models.CharField(max_length=60)
    photo = models.ImageField(upload_to='photos/', default='photos/none.png',
                              null=True, blank=True)
    description=models.TextField()
    price=models.FloatField()
    discount_price = models.FloatField(blank=True, null=True)
    valid_from = models.DateTimeField(('Valid from'), default=datetime.now)
    valid_until = models.DateTimeField(('Valid until'), blank=True, null=True)
    stock=models.IntegerField(default=0)

мой шаблон, index. html:

{% extends "./base.html" %}
{% load static %}
{% block content %}

<h3 style="text-align:center"> Product list: </h3>
  {% for product in products %}
       <div class="products">
           <div class="item">
               <table >
                   {% if product.discount %}
                       <tr><td> <a class="products" href ="{% url 'entry' produs.id %}">
                           {{products.name}} {{product.discount|cut:".0"}} {{product.price|cut:".0"}}</a>
                   {% else %}
                       <tr><td><a class="products" href ="{% url 'entry' product.id %}"> {{product.name}}  {{product.price|cut:'.0'}} </a>
                   {% endif %}
               </table>
            </div>
       </div>
  {% endfor %}
{% endblock content %}

1 Ответ

0 голосов
/ 05 мая 2020

Вы можете создать свойство, которое возвращается, если скидка еще действительна:

from django.db import models
from django.utils import timezone

class Products(models.Model):
    # &hellip;

    <b>@property</b>
    def <b>active_discount</b>(self):
        now = timezone.now()
        return self.discount_price and self.valid_from <= now and (self.valid_until is None or now <= self.valid_until)

Затем вы можете использовать это в шаблоне:

{% if product<b>.active_discount</b> %}
    <tr><td> <a class="products" href ="{% url 'entry' produs.id %}">
        {{products.name}} {{product.discount|cut:".0"}} (pret intreg: {{product.price|cut:".0"}})</a>
{% else %}
    <tr><td><a class="products" href ="{% url 'entry' product.id %}"> {{product.name}}  {{product.price|cut:'.0'}} </a>
{% endif %}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...