django.extra()中是否有左联接,它可以帮助我在django中没有任何关系的情况下联接表

问题描述 投票:1回答:1
class Ordman(models.Model):
    pcod = models.CharField(db_column="PCOD", max_length=6)

    class Meta:
        managed = False
        db_table = "ORDMAN"


class Shademst(models.Model):
    code = models.CharField(db_column="CODE", primary_key=True, max_length=6)

    class Meta:
        managed = False
        db_table = "SHADEMST"

这两个都是没有任何关系的连接,我需要在Django的ORM中的extra()的帮助下激发一个左联接查询,但是我可以应用的联接是内部联接,所以任何人都可以帮助我找出如何应用左联接加入其中。该数据库是旧数据库,因此无法对其进行更改]

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

基于评论

Ordman中的PCOD可能包含或可能没有数据,但是我仍然需要触发JOIN查询,我想执行LEFT JOIN,因此,如果PCOD没有数据,联接查询也会触发并带来数据。我需要开除 select * from ORDMAN LEFT JOIN SHADEMST on Ordman.shcd = SHADEMST.code

我建议仅将pcod上的Ordman字段定义编辑为实际上[[be外键,类似

pcod = models.ForeignKey(Shademst, db_column="PCOD", to_field="code")
并且Django应该足够聪明以推断1:N关系,并让您像往常一样进行联接。    
© www.soinside.com 2019 - 2024. All rights reserved.