как получить дату через определенное количество дней с указанной даты в шаблоне django - PullRequest
1 голос
/ 05 июля 2019

Я новичок в Джанго. Я хочу получить дату после определенного количества дней или недель в файле шаблона html.

код файла моего шаблона:

{% for factors in c.factor %}
    {% for factor_details in factors.factor_values %}
         {{factor_details.id}}
         {{factor_details.factor_value}}
            # here this is given date {{order_detail.oderdate}} and this is number of days and weeks {{factor_details.factor_value}}.

    {% endfor %}
{% endfor %}

Модель заказа:

class Order(models.Model):
    user = models.ForeignKey(settings.AUTH_USER_MODEL, null=True, blank=True,on_delete=models.CASCADE)
    order_no = models.CharField(max_length=120, blank=True) # AB31DE3
    shipping_address = models.ForeignKey(Addresses, related_name="shipping_address",null=True, blank=True,on_delete=models.CASCADE)
    billing_address = models.ForeignKey(Addresses, related_name="billing_address",null=True, blank=True,on_delete=models.CASCADE)
    cart = models.ForeignKey(Cart,on_delete=models.CASCADE)
    shipping_total = models.DecimalField(default=0.00, max_digits=65, decimal_places=2)
    totalamount = models.DecimalField(default=0.00, max_digits=65, decimal_places=2)
    stripe_id = models.CharField(max_length=120, blank=True)
    payment_status = models.CharField(max_length=120, blank=True)
    oderdate = models.DateTimeField(auto_now_add=True)
    is_active = models.BooleanField(default=True)

фактор Модель:

class ProductPriceFactor(models.Model):
    factor_value = models.CharField(max_length=255)
    name = models.CharField(max_length=255)
    is_active = models.BooleanField(default=True)

orderdate и factor_values ​​из другой модели, поэтому orderdate из order model и factor_value из ProductPriceFactor model. Помогите мне, пожалуйста.

1 Ответ

1 голос
/ 05 июля 2019

Я предполагаю, factor_details исходит от модели. Затем вы можете добавить метод в модель и отобразить значение в шаблоне. Например:

import datetime

class FactorDetail(models.Model):
   ...

   <b>def date_after_some_days(self):
       return self.oderdate + datetime.timedelta(days=self.factor_value)</b>

Затем отобразить значение в шаблоне:

{% for factor_details in factors.factor_values %}
     {{ factor_details.id }}
     {{ factor_details.factor_value }}
     <b>{{ factor_details.date_after_some_days }}</b>
{% endfor %}

Обновление

выше решение не будет работать здесь, потому что у вас нет никакой связи между orderdate и factor_value. Вместо этого вы можете создать template filter:

# template filter tag

@register.filter(name='factor_date')
def factor_date(value, arg):

    return value + datetime.timedelta(days=int(arg))

И обновить шаблон с фильтром:

{% for factor_details in factors.factor_values %}
     {{ factor_details.id }}
     {{ factor_details.factor_value }}
     <b>{{ orderdetail.oderdate|factor_date:factor_details.factor_value }}</b>
{% endfor %}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...