Django проверяет, доступно ли время в слоте с использованием моделей

#python #django #django-models #django-orm

#python #django #django-модели #django-orm

Вопрос:

У меня есть следующая модель:

 class Order(models.Model):
    user = models.ForeignKey(User, on_delete=models.CASCADE)
    time = models.DateTimeField()
  

Как бы я проверил, находится ли указанное мной время в пределах 1 часа от времени выполнения любого из заказов пользователем 1. Пример: я указываю время и отправляю его в конечную точку, конечная точка проверяет, находится ли время предоставления в пределах часа от любого из других заказов с пользователем 1. Как я могу проверить, находится ли время в пределах 1 часа от любой из моделей заказа?

Ответ №1:

Вы можете использовать диапазон, поэтому вы получите Order между 2 датами и временем :

 import datetime
from django.utils import timezone
specific_time = timezone.now()
# i am not sure if you want in range `timedelta` - 1 h and `timedelta`   1 h 
# but it's easy to modify
order_range = (specific_time - datetime.timedelta(hour=1), specific_time)
orders_in_range = Order.objects.filter(time__range=order_range)
  

Комментарии:

1. Извините за уточнение, я хочу убедиться, что указанное пользователем время не находится в пределах 1 часа от любого из полей времени модели заказа.

2. просто переопределите метод сохранения и сделайте exists() , чтобы вы могли вызвать ошибку