Django ORM连接两个表的查询


class Device(BaseModel):
device_id = models.AutoField(primary_key=True, auto_created=True, verbose_name='ID')
serial_number = models.CharField(blank=True, max_length=13, null=True)
site_name = models.CharField(blank=True, null=True,max_length=255)
class ShowAP_IAP(BaseModel):
showap_id = models.AutoField(primary_key=True, auto_created=True, verbose_name='ID')
device_id = models.ForeignKey(Device, to_field="device_id", on_delete=models.DO_NOTHING)
class Meta:
db_table = 'show_ap_iap'

我想找到一个站点内的所有设备并基于此过滤它们。谁能帮我一个有效的Django ORM查询。Device_id为其他表中的FK。

在SQL上的查询是

SELECT device.device_id, show_ap_iap.device_id_id, device.site_name,show_ap_iap.serial_number
FROM device 
INNER JOIN show_ap_iap ON device.device_id=show_ap_iap.device_id_id;

现在如何在Django中转换?

如果您有外键,您可以使用双下划线。这是一个好方法。

queryset = ShowAP_IAP.objects.values('device_id', 'showap_id', 'device_id__serial_number', 'device_id__site_name ')

第二种方法,您可以使用Subquery. annotation ()

最新更新