好的,我正在开发一个图书馆PLOW网站(这是一个爱荷华州图书馆系统的表格网站)。我无法弄清楚如何格式化日期覆盖字段,以便当有人尝试提交表单时,它不会向他们提供消息“日期必须是未来日期”。可能还有其他东西会阻止表单通过,但我认为就是这样。
(请注意,我不是程序员,对HTML知之甚少,我刚刚有几个快速教程。)
这是我收到的错误消息:
TypeError: unbound method Date() must be called with DateTime instance as first argument (got int instance instead)
这就是我要做的事情: 当我进入“覆盖”时,有三个大胆的标题可供选择:“默认表达式”,“自定义验证器”和“启用表达式”。除了“自定义验证器”之外,所有这些都是空白的:{{1}无论将来有多远,它都会显示错误消息“日期必须是未来日期”,无论将来会有多远。
我很困惑为什么这不起作用,在做了一些Google搜索之后我想出了这个:python: test(value < DateTime(),False,'Date must be a future date')
,这就是我收到此错误消息的地方:
python: test(value < DateTime.Date(2013, 10, 23),False,'Date must be a future date')
帮助?我想要的是所有未来的日期都可以工作,以前是不是很好,网站只是有一个我无法识别的不同问题?
注意:“小于”符号周围有空格,原本不在那里,但是您的网站认为我告诉它代码。
答案 0 :(得分:4)
此错误:
TypeError:未绑定方法必须使用DateTime实例作为第一个参数调用Date()(改为使用int实例)
...当你尝试在类本身上调用一个普通的实例方法而不是类的实例时,你会得到的。*(还有其他情况可以出现,但这是迄今为止最常见的。)你的代码确实在类本身上调用了一个方法:
DateTime.Date(2013, 10, 23)
我不知道这个DateTime
类或它的Date
方法是什么,但是如果它们与标准库的datetime.datetime
类及其date
类似方法,你做错了。
datetime
模块有时会引起混淆,因为模块和其中一个类具有相同的名称。并且,为了增加混淆,该类的某些方法与模块中的其他类或函数具有相同的名称。因此,这是构造date
对象的完全有效的方法:
import datetime
d = datetime.date(2013, 10, 23)
...这构造了相同的对象:
import datetime
d = datetime.datetime(2013, 10, 23).date()
......这样做:
from datetime import datetime
d = datetime(2013, 10, 23).date()
...但这是尝试在date
类上调用datetime
实例方法,这是无意义的,并且会引发您看到的同类异常。
from datetime import datetime
d = datetime.date(2013, 10, 23)
*如果您想知道为什么会出现此错误以及这意味着什么,您必须了解绑定与未绑定方法,如何调用绑定方法等。This blog post尝试解释它。但是你可能不需要知道所有这些来解决你的问题。
答案 1 :(得分:0)
为了让测试工作,必须要做一些事情:
value
必须是日期DateTime()
必须返回今天的日期我的猜测是value
实际上是一个字符串,您需要在尝试比较之前将其转换为日期。如果您真的幸运,这将有效:
DateTime(value) < DateTime()
否则,您需要确切了解value
的值是什么,然后从那里开始。