选择所有反向关系Django ORM



我的模型如下:

class Credit(models.Model):
name    = models.CharField(max_length=100)
product = models.ForeignKey('Products', models.DO_NOTHING)
class CreditStatus(models.Model):
status    = models.CharField(max_length=100)
credit_id = models.ForeignKey('Credit', models.DO_NOTHING)
class CreditCommision(models.Model):
comission    = models.CharField(max_length=100)
credit_id = models.ForeignKey('Credit', models.DO_NOTHING)

是否可以在一个查询中选择所有这些表?请注意,我不能更改信用模式。

我试过了:

CreditStatus.objects.select_related('credit').filter(status='ACTIVE')

但它只选择了2张表,但我需要全部选择吗?

尝试类似的东西

CreditStatus.objects.select_related(
'credit'
).filter(status='ACTIVE').prefetch_related('credit__creditcommision')

这将使所有信贷佣金都放在all中。例如

credit_statuses = CreditStatus.objects.select_related(
'credit'
).filter(status='ACTIVE').prefetch_related('credit__creditcommision')
for credit_status in credit_statuses:
for commission in credit_status.creditcommision.all():
print(commission)

只会运行两次,一次是获取他们的信用状态,另一次是获得与过滤后的信用状态相关的所有信用佣金。

您可以查看文档中的示例

最新更新