gpt4 book ai didi

python - 在 DetailView 中显示多个对象

转载 作者:行者123 更新时间:2023-11-30 22:57:55 25 4
gpt4 key购买 nike

我最近一直在接触 Django CBV 并且有一个问题。也许你有比我更好的想法。

假设我有一个航空公司预订 CRM 应用程序,并且我打算显示客户的各种信息。假设我有一个列表 Models ,对于 Customer喜欢 Booking , Rating , Customer_Service_Calls , Favourited_Route .

现在,给定 DetailView由Django的CBV实现,我有这样的东西

class CustomerThreeSixtyView(DetailView):
model = 'Customer'

def get_context_data(self, **kwargs):
context = super(CustomerThreeSixtyView, self).get_context_data(**kwargs)
context['bookings'] = Booking.objects.all.filter(customer_id=request.kwargs['pk']
context['ratings'] = Ratings.objects.all.filter(customer_id=request.kwargs['pk']
context['calls'] = Customer_Service_Calls.objects.all.filter(customer_id=request.kwargs['pk'], status'Open')
context['fav_routes'] = Favourited_Route.objects.all.filter(customer_id=request.kwargs['pk'], status'Open')
return context

类似这样的事情。我的问题是,有更好的方法吗?这是最直接的方法,但我寻求建议,因为似乎有一些限制。

最佳答案

你所做的看起来已经足够好了。您将获得上下文中所需的内容,然后在模板中使用它来显示信息。

或者,您可以直接访问模板中特定客户的预订,而无需在上下文中指定:

{% for booking in object.booking_set.all %} # object is the customer here
# do what you want to do with the booking here
{% endfor %}

如果使用 related_name 就更好了将客户链接到 Booking 时:

class Booking(models.Model):
customer = models.ForeignKey(Customer, related_name='bookings')
# other fields

现在,您可以直接使用定义的 lated_name 来访问特定客户的预订:

{% for booking in object.bookings.all %}
# do what you want to do with the booking here
{% endfor %}

并且,您可以对其他类使用相同的方法,例如 RatingCustomer_Service_CallsFavourited_Route 等。

关于python - 在 DetailView 中显示多个对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36416316/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com