#django-models #django-rest-framework #django-serializer
Вопрос:
Здесь я хочу проверить значение start_time в диапазоне между большим или равным нулю и меньшим или равным video_duration,
models.py
class VideoBookmark(BaseModel, SoftDelete): start_time = models.DurationField(default=timedelta()) end_time = models.DurationField(default=timedelta())
serializers.py
class VideoBookmarkSerializer(serializers.ModelSerializer): class Meta: model = VideoBookmark fields = ('start_time', 'end_time',) def validate(self,data): ...... video_duration = VideoDetails.objects.get(video=video_id).duration if not "00:00:00" <= data['start_time'] < video_duration: raise ValidationError('start time') return data
ошибка
'<=' not supported between instances of 'str' and 'datetime.timedelta'
Итак, позвольте мне ответить, как правильно ссылаться на «больше или равно нулю или меньше, чем video_duration».
Ответ №1:
данные[‘start_time’] — это объект времени, выраженный в микросекундах. Чтобы сравнить его с нулем (я так понимаю, что 00:00:00 должно быть), вы можете это сделать:
if not 0 <= int(data['start_time'].total_seconds()/1000)
Вы также сравниваете с video_duration, поэтому вам следует убедиться, что это также в микросекундах.
Комментарии:
1. Спасибо, но это еще одна ошибка, и я, наконец, получил ответ с «total_seconds ()» >>>>>> «если нет 0 >>>
2. Привет, извини за это. Я исправил ответ. Это должно сработать, вы можете отредактировать деление, если вам нужно другое выражение времени.