Django ORM简单加入

问题描述 投票:1回答:2

我想像这样执行简单的连接操作。

raw SQL:select * from risk r join sku_details s on r.sku_id = s.sku_id;

型号详情:

class SkuDetails(models.Model):
    sku_id = models.DecimalField(primary_key=True, max_digits=65535, decimal_places=65535)
    sku_desc = models.TextField(blank=True, null=True)
    category = models.TextField(blank=True, null=True)



class Risks(models.Model):
    risk_id = models.DecimalField(primary_key=True, max_digits=65535, decimal_places=65535)
    risk_group_short_desc = models.TextField(blank=True, null=True)
    risk_group_desc = models.TextField(blank=True, null=True)
    var = models.DecimalField(max_digits=65535, decimal_places=65535, blank=True, null=True)
    sku = models.ForeignKey(SkuDetails, models.DO_NOTHING, blank=True, null=True)

加入后,我希望通过Django ORM在平面结构中的所有表中的所有列...在原始SQL中我将获得所有列...但不是从ORM获取

请帮忙 !!!

django django-models django-orm
2个回答
1
投票

使用values()获取字典列表中的所有值非常简单:

Risks.objects.values(
    'risk_id',
    'risk_group_short_desc`,
    # ... fields you need from Risks
    'sku__sku_id',
    # ... fields you need from SkuDetails
)

你也可以看看values_list()


0
投票

你可以尝试使用select_related。相关的帮助material作为两个模型与外键关系。

© www.soinside.com 2019 - 2024. All rights reserved.