正在给出此错误,但在此之前,我不知道发生了什么
Model.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
views.py
@login_required
def movrotativos_novo(request):
form = MovRotativoForm(request.POST or None)
if form.is_valid():
form.save()
return redirect('core_lista_movrotativos')
答案 0 :(得分:1)
请注意,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)
答案 1 :(得分:0)
Adersource 答案应该有效,但您可以尝试这样的操作(您收到此错误是因为用户尚未结帐,因此结帐值为 null)-
`def horas_total(self):
if self.checkout is None:
# handle case where there's no value for checkout
self.checkout = datetime.datetime.now(timezone.utc)
return math.ceil((self.checkout - self.checkin).total_seconds() / 3600)`
你可能需要根据你的代码稍微调整一下