Django ORM простой Присоединяйся - PullRequest
1 голос
/ 21 марта 2019

Я хочу выполнить простую операцию соединения следующим образом.

raw SQL: выберите * из рисков r присоединитесь к sku_details s по 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

Пожалуйста, помогите !!!

Ответы [ 2 ]

1 голос
/ 21 марта 2019

Получить все значения в списке словарей довольно просто с помощью 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 голосов
/ 21 марта 2019

Вы можете попробовать это с select_related.Соответствующая помощь материал Как обе модели с отношением внешнего ключа.

...