通过 ForeignKey 查询模型以接收另一个 ForeignKey 中的数据?
Querying model by ForeignKey to receive data in another ForeignKey?
我在 运行 通过 table 查询时遇到问题,我基本上将其构建为 linkage 类型 table 到 link Company
和 Package
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
具有相同的Package
和Company
。在那种情况下,QuerySet
将多次包含 Package
。您可以通过使用 .distinct()
[Django-doc]:
来避免这种情况
Package.objects.filter(packages__company=company)<b>.distinct()</b>
我在 运行 通过 table 查询时遇到问题,我基本上将其构建为 linkage 类型 table 到 link Company
和 Package
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
具有相同的Package
和Company
。在那种情况下,QuerySet
将多次包含 Package
。您可以通过使用 .distinct()
[Django-doc]:
Package.objects.filter(packages__company=company)<b>.distinct()</b>