You need to enable JavaScript to run this app. Django查询指定ExternalService公司关联员工并在DetailView中展示的实现方法
优惠活动
大模型
产品
解决方案
定价
更多

Django查询指定ExternalService公司关联员工并在DetailView中展示的实现方法

解决方案

你现有代码存在两处需要修正的点:

  1. get()方法仅能返回单个匹配的模型实例,查询符合条件的多条数据需要使用filter()方法
  2. 调用模型查询时需先调用objects管理器,同时查询条件需要匹配当前DetailView加载的公司实例(即self.object)

完整实现代码

class ExternalServiceDetailView(generic.DetailView):
    model = models.ExternalService
    form_class = forms.ExternalServiceForm

    def get_context_data(self, **kwargs):
        context = super().get_context_data(**kwargs)
        # 写法1:直接通过外键条件过滤
        context['employees'] = models.ExternalServiceContact.objects.filter(company=self.object).order_by('name')
        # 写法2:通过Django默认生成的反向关联管理器查询,写法更简洁
        # context['employees'] = self.object.externalservicecontact_set.all().order_by('name')
        return context

补充说明

如果你在定义ExternalServiceContact的company外键字段时,添加了related_name参数,比如company = models.ForeignKey(..., related_name="employees"),那反向查询可以直接写成self.object.employees.all().order_by('name'),代码可读性更高。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.15 08:54:07