首页 > 解决方案 > TypeError:+ 不支持的操作数类型:“DateField”和“datetime.timedelta”

问题描述

在我的模型中,有、start_date_time和字段,其中必须等于和 timedelta 的总和。在我的情况下,timedelta的天等于并且是天/月/年/之一。这是我的代码:end_date_timeperiodperiod_typeend_date_timestart_date_timeperiodperiod_type

models.py

class PeriodTypeEnum(models.IntegerChoices):
    Years = 'years'
    Months = 'months'
    Days = 'days'

class Policy(models.Model):
    policy_type = models.ForeignKey('PolicyType', on_delete=models.CASCADE)
    blank = models.OneToOneField('blank_app.Blank', on_delete=models.CASCADE)
    period = models.IntegerField()
    period_type = models.IntegerField(choices=PeriodTypeEnum.choices)
    start_date_time = models.DateField(blank=True, null=True)
    end_date_time = models.DateField(default = start_date_time + timedelta(days=1), blank=True, null=True)

PS:在end_date_time字段中,timedelta(days + x) - x 必须等于period

标签: pythonpython-3.xdjangodjango-modelsdjango-views

解决方案


此代码将不起作用,因为start_date_time它不是一个值,而是一个将保留值的字段。

如上一个答案中所述,您可以覆盖清理/保存方法来设置end_date_time. 另一种选择是根据何时/如何设置使用pre_savepost_save信号。start_date_time


推荐阅读