我正在尝试将通用视图转换为基于类的视图,以便在代码中获得更好的可读性。
由此,我希望能够创建一个函数,以便可以显示列表中各个项目的模态。我是django的新手,所以我不知道可以尝试些什么,我已经在网上搜索并阅读了文档,但没有任何运气。
我当前正在使用的视图:
def my_booking_list(request):
booking_lab = Reservation.objects.filter(username=request.user.username).order_by('-id')
key = settings.STRIPE_PUBLISHABLE_KEY
print(booking_lab)
return render(request, 'my_booking_list.html', {'booking_labs': booking_lab, 'key': key})
基于类的视图,我不知道我在做什么(至少我在正确的轨道上吗?):
class MyBookingsView(ListView):
def get(self,request ,pk):
booking_lab = Reservation.objects.filter(username=request.user.username).order_by('-id')
key = settings.STRIPE_PUBLISHABLE_KEY
print(booking_lab)
return render(request, 'my_booking_list.html', {'booking_labs': booking_lab, 'key': key})
模板(部分):
{% if booking_labs %}
{% for lab in booking_labs %}
<div class="tg-dashboardservices">
<div class="tg-dashboardservice">
<div class="tg-servicetitle">
<h2><a href="#" data-toggle="modal" data-target=".tg-categoryModal">{{lab.lab.name}}</a>
{% if lab.status == 'Accepted' %}
<span>({{lab.status}})</span>
{% elif lab.status == 'Requested' %}
<span>({{lab.status}})</span>
{% elif lab.status == 'Denied' %}
<span>({{lab.status}})</span>
{% endif %}</h2>
</div>
<div class="tg-btntimeedit">
<span>{{lab.price}}</span>
<button class="tg-btnedite"><a data-toggle="modal"
data-target=".tg-categoryModal">
<i class="lnr lnr-pencil"></i></a>
</button>
<button class="tg-btndel"><a><i class="lnr lnr-trash"></i></a>
</button>
</div>
</div>
</div>
</div>
</fieldset>
</form>
</div>
</div>
</div>
</div>
</div>
</div>
{%for lab in booking_labs%}
<!--************************************
Theme Modal Box Start
*************************************-->
<div class="modal fade tg-invoicemodal tg-categoryModal" tabindex="-1">
<div class="modal-dialog tg-modaldialog" role="document">
<div class="modal-content tg-modalcontent">
<div class="tg-modalhead">
<h2>Details</h2>
<ul class="tg-btnaction">
<li class="tg-delete"><a href="#"><i class="lnr lnr-trash"></i></a></li>
</ul>
</div>
<div class="tg-modalbody">
<ul class="tg-invoicedetail">
<li><span>Lab Booked:</span><span>{{lab.lab.name}}</span></li>
<li><span>Company Name:</span><span>{{lab.lab.company}}</span></li>
<li><span>Amount:</span><span>${{lab.lab.price}}.00</span></li>
<li><span>Payment Method:</span><span>Stripe</span></li>
<li><span>Booking Status:</span>
{% if lab.status == 'Accepted' %}
<span>{{lab.status}}</span>
{% elif lab.status == 'Requested' %}
<span>{{lab.status}}</span>
{% elif lab.status == 'Denied' %}
<span>{{lab.status}}</span>
{% endif %}
</li>
<li><span>Booking Dates:</span>
<span>From: {{lab.CheckInDate}} {{lab.CheckInTime}} </br>
To: {{lab.CheckOutDate}} {{lab.CheckOutTime}}</span>
</li>
<li><span>Name:</span><span>{{lab.lab.contact_person}}</span></li>
<li>
<span>Address:</span><span>{{lab.lab.street_address}}, {{lab.lab.city}}, {{lab.lab.country}}</span>
</li>
<li><span>Message:</span><span>{{lab.message}}</span></li>
</ul>
</div>
</div>
</div>
</div>
{% endfor %}
<!--************************************
Theme Modal Box End
*************************************-->
{% endfor %}
{% endif %}
该代码当前显示模式4次,彼此重叠,我可以单击模式以清除它们,我知道这是因为模式之前有for循环。我正在尝试单击列表中的一个项目以显示其模式。
答案 0 :(得分:0)
您可以通过django docs
在列表视图中,只需指定模型并按计数分页即可。 如果要手动过滤查询集,请覆盖get_queryset()乐趣。 默认情况下,对于查询列表,查询集的上下文对象名称将为 object_list 。因此,在模板循环中, object_list 上方。如果要更改它,请指定context_object_name变量。