Django-从模型中获取特定数据
我正在尝试建立一个(公寓)预订系统。这个想法是,用户可以选择一个开始日期和结束日期,并预订公寓,如果它不是一直预订的话 我有一个带有“开始日期”和“结束日期”的预订模型,我用它来确定公寓预订的日期 用户可以使用jQueryUI日期选择器(一个小日历)来选择日期。“不可用”日期显示为灰色。 我就是这样做的:Django-从模型中获取特定数据,django,loops,logic,Django,Loops,Logic,我正在尝试建立一个(公寓)预订系统。这个想法是,用户可以选择一个开始日期和结束日期,并预订公寓,如果它不是一直预订的话 我有一个带有“开始日期”和“结束日期”的预订模型,我用它来确定公寓预订的日期 用户可以使用jQueryUI日期选择器(一个小日历)来选择日期。“不可用”日期显示为灰色。 我就是这样做的: <script type="text/javascript"> var unavailableDates = ['{{ reservation.all.0.star
<script type="text/javascript">
var unavailableDates = ['{{ reservation.all.0.start_date|date:"d-m-Y" }}', '{{ reservation.all.0.end_date|date:"d-m-Y" }}'];
console.log(unavailableDates);
function unavailable(date) {
dmy = date.getDate() + "-" + (date.getMonth() + 1) + "-" + date.getFullYear();
if ($.inArray(dmy, unavailableDates) == -1) {
return [true, ""];
} else {
return [false, "", "Unavailable"];
}
}
$(function () {
$("#datepicker").datepicker({
dateFormat: 'MM-dd-yy',
beforeShowDay: unavailable
});
});
</script>
…将日历中的日期灰显
我的预订模式如下所示:
班级预订(models.Model):
公寓=模型。外键(公寓,相关的_name='reservations',
on_delete=models.CASCADE,blank=True,null=True)
开始日期=models.DateField(blank=True,null=True,unique=True)
end_date=models.DateField(blank=True,null=True,unique=True)
name=models.CharField(默认为“”,最大长度为200,唯一性为True)
定义(自我):
返回self.name
我认为:
def公寓视图(请求、公寓id):
reservation=reservation.objects.filter(公寓\uuuu pk=公寓\u id)
公寓=获取对象或404(公寓,主键=公寓id)
上下文={'partment':单元,}
form=ReservationForm()
如果request.method==“GET”:
form=ReservationForm()
elif request.method==“POST”:
表单=预订表单(request.POST)
如果form.is_有效():
保留=表单.save(提交=False)
预订公寓
预订。保存()
form.save()
返回HttpResponseRedirect('/booking/'))
args={}
args['form']=form
args['partment']=上下文
args['reservation']=预订
返回渲染(请求'booking/plantment.html',args)
因为我需要将我的预订过滤到正确的公寓
我的问题是,如何查询与公寓相关的所有日期,包括开始日期和结束日期
所以我需要1号公寓的所有日期,然后是2号公寓的所有日期……等等
我不知道该怎么说,如果这篇文章让人困惑,我道歉
谢谢 稍后编辑:
查看JS代码后,您可能希望在视图中执行以下操作:
import itertools
unavailable_dates = apartment.reservations.values_list('start_date', 'end_date')
context['unavailable_dates'] = list(itertools.chain(*unavailable_dates)) # to convert _list_ of tuples to simple list
您可以获取链接到公寓的预订的开始/结束日期,如下所示:
apartment = get_object_or_404(Apartment, pk=apartment_id)
context['appartment_reservations_dates'] = apartment.reservations.values_list('start_date', 'end_date')
{% for reservation in apartment.reservation.all %}
{{ reservation.start_date }} - {{ reservation.end_date }}
{% endfor %}
def apartment_view(request, apartment_id):
context = dict()
context['apartment'] = get_object_or_404(Apartment, pk=apartment_id)
context['reservations'] = apartment.reservations.all() # if you want all existing reservations for this specific appartment
form = ReservationForm()
if request.method == 'GET':
form = ReservationForm()
elif request.method == 'POST':
form = ReservationForm(request.POST)
if form.is_valid(): # you can add extra validation here making sure whoever tries to book is booking for an available time interval
reservation = form.save(commit=False)
reservation.apartment = apartment
reservation.save()
form.save()
return HttpResponseRedirect('/booking/')
context['form'] = form
return render(request, 'booking/apartment.html', args)
如果要直接在HTML模板中处理整个保留
对象,可以这样做:
apartment = get_object_or_404(Apartment, pk=apartment_id)
context['appartment_reservations_dates'] = apartment.reservations.values_list('start_date', 'end_date')
{% for reservation in apartment.reservation.all %}
{{ reservation.start_date }} - {{ reservation.end_date }}
{% endfor %}
def apartment_view(request, apartment_id):
context = dict()
context['apartment'] = get_object_or_404(Apartment, pk=apartment_id)
context['reservations'] = apartment.reservations.all() # if you want all existing reservations for this specific appartment
form = ReservationForm()
if request.method == 'GET':
form = ReservationForm()
elif request.method == 'POST':
form = ReservationForm(request.POST)
if form.is_valid(): # you can add extra validation here making sure whoever tries to book is booking for an available time interval
reservation = form.save(commit=False)
reservation.apartment = apartment
reservation.save()
form.save()
return HttpResponseRedirect('/booking/')
context['form'] = form
return render(request, 'booking/apartment.html', args)
您的视图可能如下所示:
apartment = get_object_or_404(Apartment, pk=apartment_id)
context['appartment_reservations_dates'] = apartment.reservations.values_list('start_date', 'end_date')
{% for reservation in apartment.reservation.all %}
{{ reservation.start_date }} - {{ reservation.end_date }}
{% endfor %}
def apartment_view(request, apartment_id):
context = dict()
context['apartment'] = get_object_or_404(Apartment, pk=apartment_id)
context['reservations'] = apartment.reservations.all() # if you want all existing reservations for this specific appartment
form = ReservationForm()
if request.method == 'GET':
form = ReservationForm()
elif request.method == 'POST':
form = ReservationForm(request.POST)
if form.is_valid(): # you can add extra validation here making sure whoever tries to book is booking for an available time interval
reservation = form.save(commit=False)
reservation.apartment = apartment
reservation.save()
form.save()
return HttpResponseRedirect('/booking/')
context['form'] = form
return render(request, 'booking/apartment.html', args)
请添加整个视图代码。我不完全确定你想要完成什么?你说的是文章?嗨,亚历克斯,谢谢你的回答。这篇文章是个“打字错误”。我想完成的是获得一套公寓的所有预订。因此,如果我去/apartment1/那里,我有特定于apartment1的预订,当我去/apartment2/时,我有特定于apartment2的预订,等等。。我可以通过执行{reservation.all.0.start|date | date:“d-m-Y”}来逐个访问它们,但我需要一种方法来获取它们,并可能将它们保存到数组中。