Django TypeError:';的操作数类型不受支持;DateTimeField';和';DateTimeField';
在Django 2.1类中,我有以下等式:Django TypeError:';的操作数类型不受支持;DateTimeField';和';DateTimeField';,django,python-3.x,datetime,Django,Python 3.x,Datetime,在Django 2.1类中,我有以下等式: import datetime class FormBacktest(forms.Form): dateStart= forms.DateTimeField(label="Date Start", widget=DateTimePickerInput() dateEnd= forms.DateTimeField(label="Date End", widget=DateTimePickerInput() timeInMin =
import datetime
class FormBacktest(forms.Form):
dateStart= forms.DateTimeField(label="Date Start", widget=DateTimePickerInput()
dateEnd= forms.DateTimeField(label="Date End", widget=DateTimePickerInput()
timeInMin = int((dateEnd-dateStart).total_seconds()/60)
我知道DateTimeField是一个datetime.datetime实例,所以应该克服它
有什么建议吗?嗯,
datetime字段
是一个表单字段,而不是datetime
实例。但是,当您从该字段获取输入时,将得到一个datetime
对象。您可以从cleaned_data
访问其值,例如:
# in view
def someview(request):
form = FormBacktest(request.POST or None)
if request.method == "POST": # its a post request
if form.is_valid():
date_start = form.cleaned_data.get('dateStart')
date_end = form.cleaned_data.get('dateEnd')
difference= date_end - date_start # time delta object
请查看有关如何从表单获取数据的更多详细信息。另外,请从表单中删除
timeInMin
。我对您试图实现的目标有点困惑,但我会尽力提供帮助。您似乎在混淆表单和模型实例
如果要在表单上显示timeInMin
,则需要将其设置为整数字段(可能较小),然后使用javascript进行计算,并在用户输入开始和结束日期时更新字段
如果要在模型实例的数据库中提交时设置timeInMin
,并且不关心在更新表单时用Javascript更新表单上的值,那么只需在表单处理程序视图中执行,甚至可以覆盖模型的save方法
使用您现在拥有的,
DateEnd
在您尝试引用它时不会实例化,而且DateEnd
无论如何不是一个值,它是一个表单字段。为此定义一个属性。就是它!它必须从已清理的_数据中实现!