多模型通用ListView转模板
Multiple models generic ListView to template
将 2 个模型列在通用 IndexView 中的最简单方法是什么?我的两个模型是 CharacterSeries
和 CharacterUniverse
。
我的views.py
from .models import CharacterSeries, CharacterUniverse
class IndexView(generic.ListView):
template_name = 'character/index.html'
context_object_name = 'character_series_list'
def get_queryset(self):
return CharacterSeries.objects.order_by('name')
class IndexView(generic.ListView):
template_name = 'character/index.html'
context_object_name = 'character_universe_list'
def get_queryset(self):
return CharacterUniverse.objects.order_by('name')
我需要知道最短最优雅的代码。看了很多但不想使用mixins。我可能没有被指向正确的方向。
谢谢大家
您可以像这样在 ListView 上将一个查询集作为上下文传递,
class IndexView(generic.ListView):
template_name = 'character/index.html'
context_object_name = 'character_series_list'
model = CharacterSeries
def get_context_data(self, **kwargs):
context = super(IndexView, self).get_context_data(**kwargs)
context.update({
'character_universe_list': CharacterUniverse.objects.order_by('name'),
'more_context': Model.objects.all(),
})
return context
def get_queryset(self):
return CharacterSeries.objects.order_by('name')
听起来像 mixin 是唯一的(对)?方法。我添加了一个 get_context_data
方法,现在可以使用了。
快速提问,添加超过 2 个模型如何?
下面现在适用于 2 个模型:
class IndexView(generic.ListView):
template_name = 'character/index.html'
context_object_name = 'character_series_list'
def get_queryset(self):
return CharacterSeries.objects.order_by('name')
def get_context_data(self, **kwargs):
context = super(IndexView, self).get_context_data(**kwargs)
context['character_universe_list'] = CharacterUniverse.objects.order_by('name')
return context
将 2 个模型列在通用 IndexView 中的最简单方法是什么?我的两个模型是 CharacterSeries
和 CharacterUniverse
。
我的views.py
from .models import CharacterSeries, CharacterUniverse
class IndexView(generic.ListView):
template_name = 'character/index.html'
context_object_name = 'character_series_list'
def get_queryset(self):
return CharacterSeries.objects.order_by('name')
class IndexView(generic.ListView):
template_name = 'character/index.html'
context_object_name = 'character_universe_list'
def get_queryset(self):
return CharacterUniverse.objects.order_by('name')
我需要知道最短最优雅的代码。看了很多但不想使用mixins。我可能没有被指向正确的方向。
谢谢大家
您可以像这样在 ListView 上将一个查询集作为上下文传递,
class IndexView(generic.ListView):
template_name = 'character/index.html'
context_object_name = 'character_series_list'
model = CharacterSeries
def get_context_data(self, **kwargs):
context = super(IndexView, self).get_context_data(**kwargs)
context.update({
'character_universe_list': CharacterUniverse.objects.order_by('name'),
'more_context': Model.objects.all(),
})
return context
def get_queryset(self):
return CharacterSeries.objects.order_by('name')
听起来像 mixin 是唯一的(对)?方法。我添加了一个 get_context_data
方法,现在可以使用了。
快速提问,添加超过 2 个模型如何?
下面现在适用于 2 个模型:
class IndexView(generic.ListView):
template_name = 'character/index.html'
context_object_name = 'character_series_list'
def get_queryset(self):
return CharacterSeries.objects.order_by('name')
def get_context_data(self, **kwargs):
context = super(IndexView, self).get_context_data(**kwargs)
context['character_universe_list'] = CharacterUniverse.objects.order_by('name')
return context