【发布时间】:2021-09-18 12:09:41
【问题描述】:
我目前正在为我的学生开发一个网站,该网站将帮助他们在课堂上预订一些物品。我已经完成了预订逻辑和表格,因此不允许两个学生同时预订同一个项目。我想为他们创建一个表格,在其中显示项目名称和基于当前时间的项目状态。所以我有一个网页/django 视图,其中包含所有预订的列表,包括项目名称、开始日期、结束日期和预订项目的人。因此,基于此预订列表,我想创建一些逻辑来遍历此预订列表并将其与当前时间/日期进行比较。简而言之,如果当前时间/日期介于预定项目的开始日期和结束日期之间,它应该返回值“已预订”,否则返回“免费”。我不确定如何实现这一目标。我头脑风暴了几天,在互联网上搜索了一些提示,但一无所获。如果有人帮助我,我将非常感激。这是我的模型:
class Items(models.Model):
ITEMS_CATEGORIES=(
('item-1', 'item-1'),
('item-2', 'item-2'),
('item-3', 'item-3'),
('item-4', 'item-4'),
('item-5', 'item-5'),
)
category = models.CharField(max_length=5, choices=ITEM_CATEGORIES)
def __str__(self):
return self.category
class Booking(models.Model):
user = models.CharField(max_length=50, editable=False)
note = models.CharField(max_length=300, default='SOMESTRING')
item = models.ForeignKey(Subsystem, on_delete=models.CASCADE)
check_in = models.DateTimeField()
check_out = models.DateTimeField()
def __str__(self):
return f' {self.item} is booked successfully by {self.user} from {self.check_in.strftime("%d-%b-%Y %H:%M")} to {self.check_out.strftime("%d-%b-%Y %H:%M")} for {self.note} '
所以我想到了类似的东西,但是这个代码 100% 是错误的,但是类似于这个
serializers:
class BookingSerializer(serializers.ModelSerializer):
class Meta:
model = Booking
fields = (
'item','check_in','check_out', 'user'
)
current_time = datetime.datetime.now()
/
/
some logic //
if current_time = (check_in and check_out)
return "Booked"
else
return "Free"
【问题讨论】:
标签: python django django-rest-framework logic