我正在尝试这个:
retVal= ""
dI = models.DateField(date(year=2005, month=11, day=1))
dF = models.DateField(date(year=2005, month=11, day=6))
diff = dF - dI
retVal += diff + "message"
但我收到了这个错误
- 不支持的操作数类型:“DateField”和“DateField”
你能帮我吗?
我正在尝试这个:
retVal= ""
dI = models.DateField(date(year=2005, month=11, day=1))
dF = models.DateField(date(year=2005, month=11, day=6))
diff = dF - dI
retVal += diff + "message"
但我收到了这个错误
- 不支持的操作数类型:“DateField”和“DateField”
你能帮我吗?
你正在做一些非常奇怪的事情。您有 django 模型代码,它定义了不包含任何值的 Field 对象。只有实例包含字段值(您在类级别定义事物)所以无论您做什么都应该放在类方法中。
也许你很困惑,因为 django 的元类魔法将对这些属性的引用转换为数据库中的 python 值?
class MyModel(models.Model):
foo = models.DateField()
print foo # is a models.DateField
def get_foo_after_django_magic(self):
print self.foo # is a datetime() instance
DateFields 与 python datetime 实例不同,因此您无法执行您尝试执行的操作,因为 DateFields 不允许该操作。Raunak 提供的答案是正确的。
如果您有一个模型,其中包含 DateField 作为属性,那么您将执行类似的操作。
my_object = MyModelWithDateField.object.get(pk=1)
diff = datetime.today - my_object.some_datefield
您可以减去 Datefiedl 的值,即
df = datetime.date(year=2005, month=11, day=1)
di = datetime.date(year=2005, month=11, day=6)
您不能直接对日期字段执行操作
当您尝试减去两个日期对象时,差异会返回一个 timedelta 实例
>>> df = datetime.date(year=2005, month=11, day=1)
>>> di = datetime.date(year=2005, month=11, day=6)
>>> di -d5
datetime.timedelta(5)