我的模型如下:
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)
只会运行两次,一次是获取他们的信用状态,另一次是获得与过滤后的信用状态相关的所有信用佣金。
您可以查看文档中的示例