首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Django DateField减法

Django DateField减法
EN

Stack Overflow用户
提问于 2012-11-27 05:49:44
回答 3查看 2.1K关注 0票数 0

我在尝试这个:

代码语言:javascript
复制
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’

你能帮帮我吗?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-11-27 07:26:06

你做了件很奇怪的事。您有django模型代码,它定义不包含值的Field对象。只有实例包含字段值(您在类级别上定义了事物),因此您所做的任何操作都应该放在类方法中。

可能是因为django的元类魔术将对这些属性的引用转换为数据库中的python值而使您感到困惑吗?

代码语言:javascript
复制
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
票数 2
EN

Stack Overflow用户

发布于 2012-11-27 07:45:43

DateFields与python实例不一样,因此您不能做您想要做的事情,因为DateFields不允许该操作。Raunak提供的答案是正确的。

如果您有一个以DateField作为属性的模型,那么您将执行类似的操作。

代码语言:javascript
复制
my_object = MyModelWithDateField.object.get(pk=1)
diff = datetime.today - my_object.some_datefield
票数 0
EN

Stack Overflow用户

发布于 2012-11-27 06:59:33

您可以减去Datefiedl的值,即

代码语言:javascript
复制
df = datetime.date(year=2005, month=11, day=1)
di = datetime.date(year=2005, month=11, day=6)

不能直接在datefield上执行操作

当您试图减去两个date对象时,diff返回一个timedelta实例化

代码语言:javascript
复制
>>> df = datetime.date(year=2005, month=11, day=1)
>>> di = datetime.date(year=2005, month=11, day=6)
>>> di -d5
datetime.timedelta(5)
票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13578114

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档