0

我正在尝试使用 django ORM 加入多个表。我尝试了几种不同的方式,但没有运气。

from django.db import models
from compositefk.fields import CompositeForeignKey, CompositeOneToOneField

class Company(models.Model):
    code = models.DecimalField(db_column='Code', max_digits=38, decimal_places=0)   
    srccode  = models.SmallIntegerField(db_column='SrcCode')   
    est = models.DateTimeField(db_column='Est')   
    rownum = models.BigIntegerField(db_column='RowNum')  

    class Meta:
       manage = False
       unique_together = (('code', 'srccode'),)
       db_table = 'Company'  

class Floor(models.Model):
    code = models.DecimalField(db_column='Code', max_digits=38, decimal_places=0)   
    srccode  = models.SmallIntegerField(db_column='SrcCode') 
    depcode = models.DecimalField(db_column='DepCode', max_digits=38, decimal_places=0)    
    depsrccode  = models.SmallIntegerField(db_column='Depsrccode')   
    floorname  = models.CharField(db_column='FloorName')   
    rownum = models.BigIntegerField(db_column='RowNum')
    company = CompositeForeignKey(Company,on_delete=models.CASCADE,to_fields={'code':'code','srccode': 'srccode'})
    department= CompositeOneToOneField(Department,on_delete=models.CASCADE,to_fields={'depcode':'depcode','depsrccode': 'depsrccode'})   

    class Meta:
        manage = False
        unique_together = (('depcode', 'depsrccode','floorname'),)
        db_table = 'floor'

class SubCompany(models.Model):
    code = models.DecimalField(db_column='Code', max_digits=38, decimal_places=0)   
    srccode  = models.SmallIntegerField(db_column='SrcCode')
    subname  = models.CharField(db_column='SubName')   
    rownum = models.BigIntegerField(db_column='RowNum')
    location = models.CharField(db_column='Location')
    department = models.CharField(db_column='Department')
    company = CompositeForeignKey(Company,on_delete=models.CASCADE,to_fields={'code':'code','srccode': 'srccode'})

    class Meta:
        manage = False
        unique_together = (('code', 'srccode','subname','rownum'),)
        db_table = 'SubCompany'

基本上我正在尝试按照下面的行 sql 获取数据

SELECT Location, Department, Subname, t.* from [Floor] t join [SubCompany] s on t.code = s.code and t.srccode = s.srccode;"

什么是上述 SQL 查询的等效 Django Orm。?除了 django 中的原始 sql 之外,还有其他解决方案吗?谢谢

4

0 回答 0