django - 获取两个日期之间的天数
问题描述
我不知道如何获得两个日期之间的天数:这是我拥有的模型:
class Reservation(models.Model):
"""A typical class defining a reservation model."""
# Fields
id_reservation = models.BigAutoField(primary_key=True)
start_date = models.DateField(auto_now=False, auto_now_add=False)
end_date = models.DateField(auto_now=False, auto_now_add=False)
client_id = models.ForeignKey(Client, on_delete=models.CASCADE)
chambre_id = models.ForeignKey(Chamber, on_delete=models.CASCADE)
# Metadata
class Meta:
ordering = ['-end_date']
# Methods
def get_absolute_url(self):
"""Returns the url to access a particular instance of MyModelName."""
return reverse('model-detail-view', args=[str(self.id_reservation)])
def __str__(self):
return self.id_reservation
并尝试在我的通用视图中计算 end_date 和 start_date 之间的天数:
class ReservationsListView(generic.ListView):
"""ReservationsListView: produce a list of all Reservations """
model = Reservation
def get_context_data(self, **kwargs):
context = super().get_context_data(**kwargs)
context['periode'] = Reservation.end_date-Reservation.start_date
return context
可以请帮助这样做。
解决方案
您可以将两个对象相减date
,然后获得.days
属性,因此:
class Reservation(models.Model):
# …
@property
def days(self):
return (self.end_date - self.start_date).days
因此,这将返回以天为单位的差异,这意味着如果我们计算今天和昨天之间的差异,这将导致一天:
>>> (date(2021, 4, 28) - date(2021, 4, 27)).days
1
如果要考虑这两天,则将结果增加 1:
class Reservation(models.Model):
# …
@property
def days(self):
return (self.end_date - self.start_date).days + 1
Reservation
因此,您可以使用以下方法从对象中检索天数:
my_reservation.days
推荐阅读
- excel - 尽管已设置所有对象,但 Excel 的 VBA 仍会抛出“对象变量或未设置块变量”
- ios - 拥有一个模板应用程序并从中制作多个不同的应用程序
- javascript - 如何通过 froala 编辑器删除带有类 fr-popup fr-desktop 的属性样式
- swift - 不使用 Localizable.strings 的 SwiftUI 本地化系统?
- javascript - 输入字段和提交按钮未“禁用”。为什么?
- python-3.x - 显示带有 QMovie 的 QSplashScreen 和 QProgressBar 崩溃。PyQt5
- html - 嵌套的 flex 滚动从 div 中长出来
- sql - 如果新父母已经有了孩子,如何移动hierarchyid子树?
- c# - 如何将列表中的数据放入 DataGridView?
- avfoundation - tvOS - AVPlayerViewController - 频道翻转如何工作?