Django:如何在用户输入的现有日期中增加2天

时间:2019-02-12 19:48:49

标签: django python-3.x django-models django-views

我正在尝试在事件发生后2天添加付款到期日

class Payment(models.Model):       
    event_date = models.DateField()        
    payment_due_date = models.DateField()    


    class Meta:
        ordering = ["payment_due_date"]

    def payment_due_date(self):
         event_date = self.event_date
         return event_date + datetime.timedelta(days=2)
  

Pycharm给我一个错误提示Expected type 'timedelta', got 'DateField' instead more... (Ctrl+F1)

如何解决此问题

终端错误

  

match = date_re.match(value)   TypeError:预期的字符串或类似字节的对象

1 个答案:

答案 0 :(得分:1)

您可以在模型中覆盖save()方法。

注意,Django中的DateTimeField成为datetime.datetime对象。因此,要从中检索日期,您需要调用field.date()

示例:

models.py

from django.db import models
import datetime

class Payment(models.Model):
    event_date = models.DateField()
    payment_due_date = models.DateField()

    class Meta:
        ordering = ["payment_due_date"]

    def save(self, *args, **kwargs):
        if self.payment_due_date is None:
            self.payment_due_date = self.event_date.date() + datetime.timedelta(days=2)
        super(Payment, self).save(*args, **kwargs)
相关问题