通过 ForeignKey 查询模型以接收另一个 ForeignKey 中的数据?

Querying model by ForeignKey to receive data in another ForeignKey?

我在 运行 通过 table 查询时遇到问题,我基本上将其构建为 linkage 类型 table 到 link CompanyPackage

class CompanyPackageLink(models.Model):
    company = models.ForeignKey('business.Company', related_name='company_packages')
    package = models.ForeignKey('business.Package', related_name='packages')

我正在尝试通过 company 查询 CompanyPackage table,然后检索与该查询关联的所有包。

我有类似的东西...

company = Company.objects.get(employee=self.request.user)
company_packages = CompanyPackageLink.objects.filter(company=company).select_related('package')

现在这个 return 是一个正确的问题集,但它 return 是 CompanyPackage 实例。

<QuerySet [<CompanyPackageLink: companyA: PackageA>, <CompanyPackageLink: CompanyB: PackageB>]>

我想查询 return 实际的 Package 模型实例,我可以在其中检索名称、价格等

所以我希望 returned 查询集实际上 return 这个..

<QuerySet [<Package: 0.00>, <Package: 0.00>]>

感谢任何帮助!

您可以轻松查询:

Package.objects.filter(<b>packages__company=company</b>)

有可能有两个(或更多)CompanyPackageLink具有相同的PackageCompany。在那种情况下,QuerySet 将多次包含 Package。您可以通过使用 .distinct() [Django-doc]:

来避免这种情况
Package.objects.filter(packages__company=company)<b>.distinct()</b>