Django TypeError:';的操作数类型不受支持;DateTimeField';和';DateTimeField';

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 =

在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 = 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
无论如何不是一个值,它是一个表单字段。

为此定义一个属性。就是它!它必须从已清理的_数据中实现!