djangoで作業したい既存のデータベースを移行しました。私は次のモデルがあります:djangoモデルの内部結合が必要ない
class Device(models.Model):
class Meta:
db_table = u'DEVICES'
managed=False
id = models.CharField(primary_key=True, max_length=22, db_column='DEVICE_ID')
name = models.CharField(max_length=40, db_column='DEVICE_NAME')
status = models.CharField(max_length=10, db_column='STATUS')
class DevicePort(models.Model):
class Meta:
db_table = u'DEVICE_PORT'
managed=False
id = models.CharField(primary_key=True, max_length=22, db_column='DEVICE_PORT_ID')
device = models.OneToOneField(Device, db_column='DEVICE_ID')
type = models.CharField(max_length=22, db_column='PORT_TYPE_ID')
port_num = models.CharField(max_length=30, db_column='DEVICE_PORT_NUM')
class IP(models.Model):
class Meta:
db_table = u'IP_NODE'
managed=False
ip_address = models.CharField(primary_key=True, max_length=15, db_column='IP_NODE_NO')
hostname = models.CharField(max_length=40, db_column='IP_HOST')
port = models.OneToOneField(DevicePort, db_column='DEVICE_PORT_ID')
status = models.CharField(max_length=50, db_column='IP_NODE_STATUS')
iはDevices
のリストとその関係IP.ip_address
とIP.hostname
秒をしたいです。 SQLでは、私は次のような何かをするでしょう:
SELECT UNIQUE
d.device_name device
FROM
IP_NODE c,
DEVICES d,
DEVICE_PORT e
WHERE
c.ip_node_no = b.ip_node_no
AND c.device_port_id = e.device_port_id
AND e.device_id = d.device_id
AND d.device_name LIKE 'something';
私はどのように私のdjangoモデルでこれを行うのですか?
よろしくお願いします。 *なぜ* INNER JOINを使用したくないのですか? –
ORMに使用されているステートメントを指示させるのではなく、いつでも独自のSQLステートメントを実行できます。https://docs.djangoproject.com/en/1.3/topics/db/sql/ – Brandon