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

Django查询:匹配company_members与table_contacts数据并渲染至下拉框

Django 查询实现方案

1. 模型定义(参考)

先确保你的Django模型与数据库表对应:

from django.db import models

class CompanyMember(models.Model):
    id = models.IntegerField(primary_key=True)
    company = models.CharField(max_length=100)
    # 其他关联字段根据实际需求补充

class TableContact(models.Model):
    id = models.IntegerField(primary_key=True)
    first_name = models.CharField(max_length=50)
    last_name = models.CharField(max_length=50)
    # 其他字段根据实际需求补充

2. 查询语句实现

要获取指定公司(比如Nike)的company_members中,id与table_contacts匹配的联系人记录,有两种高效实现方式:

方式一:分步筛选

先提取目标公司所有成员的id集合,再匹配联系人表:

def your_view(request):
    # 获取Nike公司所有成员的id列表
    target_member_ids = CompanyMember.objects.filter(company="Nike").values_list('id', flat=True)
    # 筛选出id匹配的联系人记录
    rendered_result = TableContact.objects.filter(id__in=target_member_ids)
    # 将数据传递到模板
    return render(request, 'your_template.html', {'rendered_result': rendered_result})

方式二:子查询关联

利用Django的子查询能力,直接通过关联条件获取结果(性能更优):

def your_view(request):
    rendered_result = TableContact.objects.filter(
        id__in=CompanyMember.objects.filter(company="Nike").values('id')
    )
    return render(request, 'your_template.html', {'rendered_result': rendered_result})

3. 模板代码修正

你提供的模板中名字拼接语法有误,修正后如下:

<select id="members_in_companies">
    {% for option in rendered_result %}
        <option value="{{ option.id }}">{{ option.first_name }} {{ option.last_name }}</option>
    {% endfor %}
</select>

按上述代码实现后,查询Nike公司时,下拉框会正确显示值为2、4,对应选项为Ellon Musk、Willy Wonka。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 15:05:06