分享
为什么问答平台  ›  专栏  ›  技术社区  ›  Frendom

django:从表中获取数据并使用listview一起显示 - Django: get data from tables and display together using ListView

  •  1
  • Frendom  · 技术社区  · 1 周前

    **imports**
    def home(request):
        context = {'users': Person.object.all(),
                   'emails': Email.object.all()
                  }
        return render(request,'app/home.html',context)
    
    class PersonListView(ListView):
        model = Person
        template_name = 'app/home.html'
        context_object_name = 'users'
    

    {% extends "app/base.html" %}
    {% block content %}
        {% for user in users %}
        Displaying user attributes works fine
        {% endfor %}
    
    Here should be emails
    {% for email in emails %}
        This displaying doesnt work
    {% endfor %}
    {% endbock content %}
    

    1 回复  |  直到 1 周前
        1
  •  1
  •   Willem Van Onsem    1 周前

    ListView [Django-doc] 仅用于显示 一次查询集。如果需要传递额外的查询集,可以重写 get_context_data(..) method [Django-doc] :

    class PersonListView(ListView):
        model = Person
        template_name = 'app/home.html'
        context_object_name = 'users'
    
        def get_context_data(self, **kwargs):
            context = super().get_context_data(**kwargs)
            context.update(emails=Email.objects.all())
            return context

    在这里我们传递一个额外的变量 emails 到模板呈现引擎。但是请注意,此查询集不会 分页 (或者至少在不添加分页的情况下)。

    我的 models.py :

    注意那些是 意见 ,你需要把这些写进去 views.py