【发布时间】:2020-07-18 17:00:26
【问题描述】:
基于以下模型:
class OpportunityDetail(models.Model):
ContactDetail = models.ForeignKey(ContactDetail, on_delete=models.CASCADE, related_name='OpportunityContactDetails')
Stage = models.CharField(max_length=20, unique = False, choices=stages)
class ProductDetail(models.Model):
Name = models.CharField(max_length=30, unique = False)
Amount = models.DecimalField(max_digits=12, decimal_places=2, unique = False)
class ProductItemDetail(models.Model):
ProductDetail = models.ForeignKey(ProductDetail, on_delete=models.CASCADE, related_name='ProductDetails')
OpportunityDetail = models.ForeignKey(OpportunityDetail, on_delete=models.CASCADE, related_name='OpportunityDetails')
ChildrenDetail = models.ForeignKey(ChildrenDetail, on_delete=models.CASCADE, related_name='ChildrenProduct')
当我查询机会时,我通常会这样做:
oppLST = OpportunityDetail.objects.filter(ContactDetail = myCon.id)
但是,我想知道如何获得产品项目的内部查询?在 sql 中我会做类似的事情:
SELECT Id, Stage, (SELECT Id, ProductDetail, ProductDetail.Name FROM ProductItemDetail) FROM OpportunityDetail WHERE ContactDetail = myCon.id
我想知道是否可以在 django 中做这样的事情
【问题讨论】:
-
是的,可以使用 django 在查询中创建子查询。澄清一下,您希望 SQL 查询的结果在您给出的示例中是什么?
-
@PeterGalfi 在我的模板中我想遍历机会,对于每个我想遍历项目,这样我可以显示一个 opps 列表,并为每个 opp 一个他们的项目列表,是否可以使用查询“django 语言”?我的意思是格式 OpportunityDetail.objects.filter ....
标签: python django django-models django-queryset