【问题标题】:Select all reverse relations Django ORM选择所有反向关系 Django ORM
【发布时间】:2020-04-02 23:47:46
【问题描述】:

我的模型是这样的:

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个表,但我需要全选?

【问题讨论】:

    标签: django django-models django-orm


    【解决方案1】:

    试试类似的东西

    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)
    

    只会运行两次访问数据库,一次是获取信用状态及其信用,第二次将带来与过滤的信用状态相关的所有信用佣金。

    您查看documentation中的示例

    【讨论】:

      猜你喜欢
      • 2020-02-12
      • 1970-01-01
      • 1970-01-01
      • 2014-05-27
      • 2019-06-15
      • 2018-07-05
      • 2021-08-02
      • 2016-10-02
      • 2010-11-03
      相关资源
      最近更新 更多