#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. Привет, извини за это. Я исправил ответ. Это должно сработать, вы можете отредактировать деление, если вам нужно другое выражение времени.