You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何去除Django项目下拉菜单中的重复developer_id值?

解决下拉菜单重复显示developer_id的问题

核心解决方案

1. 修改视图层(view.py)的index函数

当前你传给模板的是所有Listing对象,循环时会重复输出相同的developer_id。需要获取去重后的developer_id列表:

def index(request):
    # 获取去重的developer_id列表,flat=True返回单个值而非元组
    unique_developers = Listing.objects.values_list('developer_id', flat=True).distinct()
    return render(request, "auctions/index.html", {
        "auctions": Listing.objects.all(),  # 保留原有数据供页面其他区域使用
        "unique_developers": unique_developers  # 新增去重后的开发者ID列表
    })

2. 修改模板层(index.html)的下拉菜单循环

把原来遍历auctions改为遍历unique_developers,确保每个developer_id仅显示一次:

<form action="{% url 'sort_categories' %}" method="post">
    {% csrf_token %}
    <label for="dev"></label>
    <select name="developer_id" id="developer_id">
        {% for dev_id in unique_developers %}
            <option value="{{ dev_id }}">{{ dev_id }}</option>
        {% endfor %}
    </select>
    <!-- 建议补充表单提交按钮:<button type="submit">筛选</button> -->
</form>

额外优化建议

  • sort_categories视图中sortobjects = Games.objects.values(developer_id=dev).distinct()写法有误,若需获取去重的开发者数据,可改为Games.objects.values_list('developer_id', flat=True).distinct();如果仅用于筛选Listing,当前get_article = Listing.objects.filter(developer_id=dev)已满足需求。
  • 若developer_id关联的是Games模型的开发者,建议直接从Games模型获取去重数据(Games.objects.values_list('developer_id', flat=True).distinct()),避免遗漏无对应Listing的开发者。

内容的提问来源于stack exchange,提问作者JDD_87

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.25 04:12:55