基于Django类的Listview,具有两个经过筛选的单独列表

基于Django类的Listview,具有两个经过筛选的单独列表,django,class,django-queryset,Django,Class,Django Queryset,您好,我正在尝试创建一个使用模型项的页面,该模型项有一个名为data_type的模型字段,其整数选择为1或2。我目前有一个Listview页面,我正在尝试创建两个列表,一个显示数据类型为1的项目,另一个显示数据类型为2的项目 1代表模型,2代表脚本,如果有帮助的话 这是我的观点 class ItemListView(generic.ListView): context_object_name = 'model_list' queryset = Item.objects.fil

您好,我正在尝试创建一个使用模型项的页面,该模型项有一个名为data_type的模型字段,其整数选择为1或2。我目前有一个Listview页面,我正在尝试创建两个列表,一个显示数据类型为1的项目,另一个显示数据类型为2的项目

1代表模型,2代表脚本,如果有帮助的话

这是我的观点

class ItemListView(generic.ListView):


    context_object_name = 'model_list'
    queryset = Item.objects.filter(data_type='1')

    context_object_name = 'script_list'
    queryset = Item.objects.filter(data_type='2')

    template_name = 'item_list.html',
Item_list.html

<h3 class="text-muted text-center mt-4">Models</h3>
<hr>
<div class="container">
  <div class="row mt-4">
  {% if model_list %}
    {% for item in model_list %}
  <div class="col-md-3">
    <div class="card card-primary card-effects p-2 mb-3 mt-4">
      <a href="{% url 'portal:item_detail' item.pk %}" class="card-full-link">
      <img class="card-img" src="{{ item.image.url }}" alt="Generic placeholder image" width="225" height="185">
      <div class="card-body">
        <p class="text-muted"> {{ item.get_data_type_display }}</p>
        <h4 class="text-left"> {{ item.name }}<span class="text-blue">Ξ{{ item.price }}</span></h4>
      </div>
      </a>
      <!-- <p><a class="btn btn-success" href="#" role="button">Learn more &raquo;</a></p> !-->
    </div>
  </div>
          {% endfor %}
    {% else %}
      <p>There are no items in the database.</p>
    {% endif %}


  </div>
</div>

<h3 class="text-muted text-center mt-4">Scripts </h3>
<hr>
<div class="container">
  <div class="row mt-4">
  {% if script_list %}
    {% for item in script_list %}
  <div class="col-md-3">
    <div class="card card-primary card-effects p-2 mb-3 mt-4">
      <a href="{% url 'portal:item_detail' item.pk %}" class="card-full-link">
      <img class="card-img" src="{{ item.image.url }}" alt="Generic placeholder image" width="225" height="185">
      <div class="card-body">
        <p class="text-muted"> {{ item.get_data_type_display }}</p>
        <h4 class="text-center"> {{ item.name }}<span class="text-blue">Ξ{{ item.price }}</span></h4>
      </div>
      </a>
      <!-- <p><a class="btn btn-success" href="#" role="button">Learn more &raquo;</a></p> !-->
    </div>
  </div>
          {% endfor %}
    {% else %}
      <p>There are no items in the database.</p>
    {% endif %}


  </div>
</div>
希望views.py能让你知道我在做什么。似乎我不能有两个上下文\u对象\u名称和查询集。如果删除vottom上下文\u对象\u名称和queryset,将加载模型\u列表

我从django文档中获得了context\u object\u name queryset思想

您可以覆盖get\u context\u data方法:


啊,谢谢。这是有道理的,我不知道为什么我不想使用get_context_数据!
class ItemListView(generic.ListView):

    context_object_name = 'model_list'
    queryset = Item.objects.filter(data_type='1')

    template_name = 'item_list.html'

    def get_context_data(self, **kwargs):
        context = super(ItemListView, self).get_context_data(**kwargs)
        context['script_list'] = Item.objects.filter(data_type='2')
        return context