Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/321.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
Python Django中的复滤波_Python_Django_Django Templates_Django Views - Fatal编程技术网

Python Django中的复滤波

Python Django中的复滤波,python,django,django-templates,django-views,Python,Django,Django Templates,Django Views,我有一个简化的Django模型,类似于以下内容: models.py 因此,我的模板需要的层次结构是Hotel->RoomType->Room,每个模板都经过过滤 views.py 这些查询中的每一个都在某种程度上起作用。我还没有弄明白如何在模板中使用它们 我正在尝试简化如下工作HTML: template.html 如何将对象传递到模板,以便以类似于上述的方式处理它们?您的第一个代码片段可以简化为仅此一个调用: hotels = Hotel.objects.filter(roomtype__r

我有一个简化的Django模型,类似于以下内容:

models.py

因此,我的模板需要的层次结构是Hotel->RoomType->Room,每个模板都经过过滤

views.py

这些查询中的每一个都在某种程度上起作用。我还没有弄明白如何在模板中使用它们

我正在尝试简化如下工作HTML:

template.html


如何将对象传递到模板,以便以类似于上述的方式处理它们?

您的第一个代码片段可以简化为仅此一个调用:

hotels = Hotel.objects.filter(roomtype__room=<whatever your criteria are>)

您不能在模板中执行此查询,但可以将hotels queryset传递到模板中进行渲染。

这将为每个房间生成hotels in hotels。如果一家酒店有4间符合标准的房间,我会得到4份该酒店的复印件。我似乎找不到迭代哪个对象来访问每个酒店中过滤的RoomType。
# only get available rooms that meet the user supplied criteria in q
q = Q() # complex query building omitted
rooms = Room.objects.filter(q) 

# only get roomtypes that have rooms meeting criteria in q
roomTypesValues = rooms.values_list('roomType', flat=True)
roomTypes = RoomType.objects.filter(pk__in=list(roomTypesValues))

# only get hotels that have rooms meeting criteria in q
hotelsValues = roomTypes.values_list('hotel', flat=True)
hotels = Hotel.objects.filter(pk__in=list(hotelsValues))

c=RequestContext(request, {'hotels': hotels})
{% for hotel in hotels %}
<h1>{{hotel.name}}</h1>

   <ul>
   {% for roomtype in hotel.roomtypes %}
     <li>
       {{roomtype.name]}, {{roomtype.price}}
       {% for room in roomtype.rooms %}
            <!-- not really needed for this -->
       {% endfor %}
     </li>
   {% endfor %}
   </ul>
{% endfor %}
hotels = Hotel.objects.filter(roomtype__room=<whatever your criteria are>)