Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Django-从模型中获取特定数据_Django_Loops_Logic - Fatal编程技术网

Django-从模型中获取特定数据

Django-从模型中获取特定数据,django,loops,logic,Django,Loops,Logic,我正在尝试建立一个(公寓)预订系统。这个想法是,用户可以选择一个开始日期和结束日期,并预订公寓,如果它不是一直预订的话 我有一个带有“开始日期”和“结束日期”的预订模型,我用它来确定公寓预订的日期 用户可以使用jQueryUI日期选择器(一个小日历)来选择日期。“不可用”日期显示为灰色。 我就是这样做的: <script type="text/javascript"> var unavailableDates = ['{{ reservation.all.0.star

我正在尝试建立一个(公寓)预订系统。这个想法是,用户可以选择一个开始日期和结束日期,并预订公寓,如果它不是一直预订的话

我有一个带有“开始日期”和“结束日期”的预订模型,我用它来确定公寓预订的日期

用户可以使用jQueryUI日期选择器(一个小日历)来选择日期。“不可用”日期显示为灰色。 我就是这样做的:

<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”}来逐个访问它们,但我需要一种方法来获取它们,并可能将它们保存到数组中。