python - - 不支持的操作数类型:“NoneType”和“datetime.datetime”
问题描述
给出了这个错误,但之前没有,我不知道发生了什么
模型.py
class MovRotativo(models.Model):
checkin = models.DateTimeField(auto_now=False, null=False, blank=False)
checkout = models.DateTimeField(auto_now=False, null=True, blank=True)
valor_hora = models.DecimalField(max_digits=5, decimal_places=2)
veiculo = models.ForeignKey(Veiculo, on_delete=models.CASCADE)
pago = models.BooleanField(default=False)
def horas_total(self):
return math.ceil((self.checkout - self.checkin).total_seconds() / 3600)
def total(self):
return self.valor_hora * self.horas_total()
def __str__(self):
return self.veiculo.placa
视图.py
@login_required
def movrotativos_novo(request):
form = MovRotativoForm(request.POST or None)
if form.is_valid():
form.save()
return redirect('core_lista_movrotativos')
解决方案
请注意,该checkout
字段允许null
值。我猜这个错误是在字段horas_total
中记录的方法上引发的。之前未引发此错误的原因可能是没有任何记录丢失该字段。null
checkout
checkout
编辑:至于解决方案,您可以强制该checkout
字段具有值。或者,您可以检查None
:
def horas_total(self):
if self.checkout is None:
# handle case where there's no value for checkout
return math.ceil((self.checkout - self.checkin).total_seconds() / 3600)
推荐阅读
- swiftui - 动画快门按钮,如 SwiftUI 中的相机应用程序
- c - 递增字符数组中的地址时出现编译器错误
- java - mybatis 在插入数据库时会更改时区吗?
- r - 在具有负数和正数的数据框中查找最大负数和最小正数
- javascript - 如何转换数组
- scala - 在结构化流式处理中使用的 Spark DataFrame 在其基础数据在源处更新时会发生什么情况?
- python - 使用 pandas 和 dask 合并具有不同模式的镶木地板文件
- reactjs - 在 React 中,如何为这种类型的组件应用 componentDidMount?
- python - 基于一列的数据框组并获取另一列所需项目的值总和
- sql - 如何根据条件替换 NULL 值?