首页 > 解决方案 > - 不支持的操作数类型:“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')

标签: pythondjango

解决方案


请注意,该checkout字段允许null值。我猜这个错误是在字段horas_total中记录的方法上引发的。之前未引发此错误的原因可能是没有任何记录丢失该字段。nullcheckoutcheckout

编辑:至于解决方案,您可以强制该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)

推荐阅读