【发布时间】:2019-10-11 05:42:49
【问题描述】:
作为任务的一部分,我创建了一个“公寓列表”网站。我设法做到了,但现在我需要为它建立一个“预订系统”。 基本思想是登录用户可以从列出的公寓中选择一个公寓,选择“开始日期”和“结束日期”(如果该公寓尚未预订)并预订该公寓。
当用户单击日期输入字段时,会弹出一个 jquery 日期选择器,然后他可以通过日历选择日期,结束日期也是如此。 一旦他完成预订,我希望在日历中“禁用”日期,这样其他人就无法选择它们。
这是我正在使用的日期选择器:
https://jqueryui.com/datepicker/
和代码:
<script>
$(function () {
$("#datepicker").datepicker();
});
</script>
我是一个完全的 Django / Web 开发新手,需要一些指导才能从某个地方开始这项任务,我知道一些 JS,但 jquery 对我来说是新的,这就是我想要一些帮助的原因。
我有一个公寓模型,其中包含所有公寓信息,我使用这些信息通过模板打印出所有内容。 我有一个预订模型,它将预订的开始日期和结束日期保存到数据库中。
我正在使用提供的 django 用户模型来注册/登录。 我正在使用 Django 2.1.8 (mySQL db)
我创建了这个视图和模型来进行预订:
单一列表视图:
def apartment_view(request, apartment_id):
reservation_pk = request.GET.get('pk', None)
reservation = Reservation.objects.filter(apartment__pk=apartment_id)
apartment = get_object_or_404(Apartment, pk=apartment_id)
context = {'apartment': apartment, }
context_instance = RequestContext(request)
form = ReservationForm()
if request.method == 'GET':
form = ReservationForm()
elif request.method == 'POST':
form = ReservationForm(request.POST)
if form.is_valid():
reservation = form.save(commit=False)
reservation.apartment = apartment
reservation.save()
form.save()
return HttpResponseRedirect('/booking/')
args = {}
args['form'] = form
args['apartment'] = context
args['reservation'] = reservation
return render(request, 'booking/apartment.html', args)
型号:
class Apartment(models.Model):
title = models.CharField(max_length=200)
address = models.CharField(max_length=200)
city = models.CharField(max_length=100)
state = models.CharField(max_length=100)
zipcode = models.CharField(max_length=20)
description = models.TextField(blank=True)
price = models.IntegerField()
bedrooms = models.IntegerField()
bathrooms = models.DecimalField(max_digits=2, decimal_places=1)
garage = models.IntegerField(default=0)
size = models.IntegerField()
photo_main = models.ImageField(upload_to='photos/%Y/%m/%d/')
photo_1 = models.ImageField(upload_to='photos/%Y/%m/%d/', blank=True)
photo_2 = models.ImageField(upload_to='photos/%Y/%m/%d/', blank=True)
photo_3 = models.ImageField(upload_to='photos/%Y/%m/%d/', blank=True)
photo_4 = models.ImageField(upload_to='photos/%Y/%m/%d/', blank=True)
in_rent = models.BooleanField(default=False)
list_date = models.DateTimeField(default=datetime.now, blank=True)
def __str__(self):
return self.title
class Reservation(models.Model):
apartment = models.ForeignKey(Apartment, related_name='reservations',
on_delete=models.CASCADE, blank=True, null=True)
start_date = models.DateField(blank=True, null=True, unique=True)
end_date = models.DateField(blank=True, null=True, unique=True)
name = models.CharField(default="", max_length=200, unique=True)
def __str__(self):
return "Reservation"
我的表格:
class ReservationForm(forms.ModelForm):
class Meta:
model = Reservation
fields = [
'start_date',
'end_date',
'name',
]
widgets = {
'start_date': TextInput(attrs={'id': 'datepicker'}),
'end_date': TextInput(attrs={'id': 'datepicker2'}),
}
感谢您花时间阅读本文,感谢您的帮助! 祝你们有美好的一天!
TLDR :根据数据库中的数据,我需要“禁用”jquery 日历中的某些日期范围
【问题讨论】:
-
您可以参考stackoverflow.com/questions/18350923/… 禁用日期选择器
-
这不是我要问的,如果令人困惑,请见谅。我需要一种方法来禁用日历中的 DATES,因此我需要日历“查看”Reservations 模型,并“禁用”或灰显其中的所有日期。
-
您的意思是要显示日历但不能从中选择日期?
-
是的,没错!我需要从 db 查询并根据数据禁用选择返回的日期!
标签: javascript python jquery django model