0

私はdjango ORMを使用して複数のテーブルに参加しようとしています.iはいくつかの異なる方法を試しましたが、うまくいきません.

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