Django DateField减法

时间:2012-11-27 05:49:45

标签: django django-models 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'

你能帮我吗?

3 个答案:

答案 0 :(得分:1)

你做的事很奇怪。你有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

答案 1 :(得分:0)

您可以减去Datefiedl的值,即

df = datetime.date(year=2005, month=11, day=1)
di = datetime.date(year=2005, month=11, day=6)

您无法直接在日期字段

上执行操作

当你试图减去两个日期对象时,差异会返回一个timedelta instanace

>>> df = datetime.date(year=2005, month=11, day=1)
>>> di = datetime.date(year=2005, month=11, day=6)
>>> di -d5
datetime.timedelta(5)

答案 2 :(得分:0)

DateFields与python datetime实例不同,因此您无法执行您尝试执行的操作,因为DateFields不允许该操作。 Raunak提供的答案是正确的。

如果你有一个将DateField作为属性的模型,那么你将会做类似的事情。

my_object = MyModelWithDateField.object.get(pk=1)
diff = datetime.today - my_object.some_datefield