Python Django - неподдерживаемый тип(ы) операнда для -: 'float' и 'NoneType'
Я новичок в python и Django, я пытался искать, но не могу найти ответ на этот вопрос. Может ли кто-нибудь помочь мне с этим, пожалуйста.
Код из моего html:
<td class="px-2 py-1 align-middle text-center">
{{ schedule.count_available|floatformat:0|intcomma }}
</td>
моя модель:
class Schedule(models.Model):
code = models.CharField(max_length=100)
vessel = models.ForeignKey(Vessel,on_delete=models.CASCADE)
depart = models.ForeignKey(Location,on_delete=models.CASCADE, related_name='depart_location')
destination = models.ForeignKey(Location,on_delete=models.CASCADE, related_name='destination')
schedule= models.DateTimeField()
fare= models.FloatField()
status = models.CharField(max_length=2, choices=(('1','Active'),('2','Cancelled')), default=1)
date_created = models.DateTimeField(default=timezone.now)
date_updated = models.DateTimeField(auto_now=True)
def __str__(self):
return str(self.code + ' - ' + self.vessel.vessel_number)
def count_available(self):
booked = Booking.objects.filter(schedule=self).aggregate(Sum('seats'))['seats__sum']
return self.vessel.seats - booked
ошибка: ошибка изображения
Ошибка появляется, когда значение booked
равно None
.
Вам следует отладить свой код.
Имеет ли ваш запрос Booking.objects.filter(schedule=self)
хотя бы одно значение
Ошибка возникает, когда django встречает объект расписания, у которого нет бронирования, и в таком случае
booked = Booking.objects.filter(schedule=self).aggregate(Sum('seats'))['seats__sum']
оценивается в None и вызывает ошибку
Чтобы решить эту проблему, обновите метод count_available следующим образом
def count_available(self):
booked = Booking.objects.filter(schedule=self).aggregate(Sum('seats'))['seats__sum']
if booked:
return self.vessel.seat - booked
return self.vessel.seats
Это будет выполнять вычитание только в том случае, если бронирование для данного расписания доступно, в противном случае возвращается общее количество мест для расписания