Django 1.8 如何通过当前通用详细信息视图的 id 过滤对象
Django 1.8 How to filter an object by id of current generic Detail View
我正在努力(由于是 django 的新手)如何通过当前详细信息视图 ID 过滤对象。
例如,我正在编写一个测试应用程序,允许 "venues" 拥有自己的详细信息页面,并且在该页面上他们可以显示他们的 "Menu" 项目,"OpeningHours" 等
这是我从视图发送到模板的内容:
class DetailView(generic.DetailView):
model = Venue
template_name = 'nmq/detail.html'
def get_queryset(self):
return Venue.objects.all()
def get_context_data(self, **kwargs):
context = super(DetailView, self).get_context_data(**kwargs)
context['OpeningHours'] = OpeningHours.objects.all()
context['Menu'] = Menu.objects.all()
context['Venue'] = self.queryset
return context
我可以轻松地设法从该模型中获取所有 OpeningHours,但这是所有用户共享的。我试图通过当前页面的 id 来过滤它。我可以使用 {{ venue.id }} 在详细信息页面上访问它,但我似乎无法设法将它与其他任何东西放在一起以获取该特定 id 的营业时间菜单项。
在详细视图的 get_context_data
方法中,您可以使用 self.object
访问对象。因此你可以 filter
像这样:
def get_context_data(self, **kwargs):
context = super(DetailView, self).get_context_data(**kwargs)
context['OpeningHours'] = OpeningHours.objects.filter(venue=self.object)
context['Menu'] = Menu.objects.filter(self.object)
return context
我认为您不需要设置 context['Venue'] = self.queryset
。 DetailView
允许您在模板中使用 {{ object }}
或 {{ venue }}
访问场地。
我正在努力(由于是 django 的新手)如何通过当前详细信息视图 ID 过滤对象。
例如,我正在编写一个测试应用程序,允许 "venues" 拥有自己的详细信息页面,并且在该页面上他们可以显示他们的 "Menu" 项目,"OpeningHours" 等
这是我从视图发送到模板的内容:
class DetailView(generic.DetailView):
model = Venue
template_name = 'nmq/detail.html'
def get_queryset(self):
return Venue.objects.all()
def get_context_data(self, **kwargs):
context = super(DetailView, self).get_context_data(**kwargs)
context['OpeningHours'] = OpeningHours.objects.all()
context['Menu'] = Menu.objects.all()
context['Venue'] = self.queryset
return context
我可以轻松地设法从该模型中获取所有 OpeningHours,但这是所有用户共享的。我试图通过当前页面的 id 来过滤它。我可以使用 {{ venue.id }} 在详细信息页面上访问它,但我似乎无法设法将它与其他任何东西放在一起以获取该特定 id 的营业时间菜单项。
在详细视图的 get_context_data
方法中,您可以使用 self.object
访问对象。因此你可以 filter
像这样:
def get_context_data(self, **kwargs):
context = super(DetailView, self).get_context_data(**kwargs)
context['OpeningHours'] = OpeningHours.objects.filter(venue=self.object)
context['Menu'] = Menu.objects.filter(self.object)
return context
我认为您不需要设置 context['Venue'] = self.queryset
。 DetailView
允许您在模板中使用 {{ object }}
或 {{ venue }}
访问场地。