对于使用 django admin 的酒店预订系统,我想过滤给定日期范围内可用的房间,模型如下
class Room(models.Model):
id = models.AutoField(primary_key=True)
hotel = models.ForeignKey(Hotel, on_delete=models.CASCADE)
class Booking(models.Model):
id = models.AutoField(primary_key=True)
start_date = models.DateField(verbose_name=_("Start date"))
end_date = models.DateField(verbose_name=_("End date"))
room = models.ForeignKey(Room, on_delete=models.CASCADE)
如何在管理员中过滤房间,以便选择日期范围并仅返回在所选范围内没有预订的房间?
非常感谢
在我使用的管理面板中按日期创建选择过滤器 以下库:django-admin-rangefilter
库安装后。我在管理面板中注册 Room 模型,并使用
DateRangeFilterBuilder()
在 list_filter 中指示(小写的辅助模型的名称及其用于过滤的字段)。
管理员.py
from .models import *
from django.contrib import admin
from rangefilter.filters import DateRangeFilterBuilder
class Room_Admin(admin.ModelAdmin):
list_display = ('id', 'hotel')
list_filter = (('booking__start_date', DateRangeFilterBuilder()),
('booking__end_date', DateRangeFilterBuilder()))
admin.site.register(Room, Room_Admin)
在管理面板中,我选择日期范围:开始日期和结束日期,结果我得到按预订日期过滤的房间。