Multiple models generic ListView to template

前端 未结 2 471
天命终不由人
天命终不由人 2020-12-29 00:24

What is the SIMPLEST method for getting 2 models to be listed in a generic IndexView? My two models are CharacterSeries and CharacterUniverse.

相关标签:
2条回答
  • 2020-12-29 00:45

    You can pass the one queryset in as context on the ListView like this,

    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')
    
    0 讨论(0)
  • 2020-12-29 00:58

    https://docs.djangoproject.com/en/1.8/ref/class-based-views/mixins-simple/#django.views.generic.base.ContextMixin.get_context_data

    Sounds like a mixin is the only (right)? way. I added a get_context_data method and now it works.

    Quick question how about adding more than 2 models..?

    below works with the 2 models now:

    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
    
    0 讨论(0)
提交回复
热议问题