【发布时间】:2014-08-30 01:18:17
【问题描述】:
我想执行 Django Join 操作。我该怎么做?
我的模型是:-
class ShipmentScanMapping(models.Model):
barcode = models.CharField(max_length = 255)
shipment_id = models.ForeignKey('Shipment',related_name ='scans')
class ShipmentPPTLMapping(models.Model):
pptl_id = models.CharField(max_length = 255)
shipment_id = models.ForeignKey('Shipment', related_name = 'pptls')
class Shipment(models.Model):
job_id = models.CharField(max_length = 255)
time = models.DateTimeField( auto_now_add = True, db_index = True)
我在 SQL 中的查询是:-
select * from data_shipmentpptlmapping inner join data_shipmentscanmapping where data_shipmentpptlmapping.shipment_id = data_shipmentscanmapping.shipment_id and data_shipmentscanmapping.barcode = 'xyzabc';
我想获取那些具有barcode = 'xyzabc' 的对象,然后引用 key shipment_id of datashipmentscanmapping = shipping_id of datashipmentpptlmapping。
我现在正在做。
shipment_scan_obj = ShipmentScanMapping.objects.filter(barcode = barcode).values('shipment_id')['shipment_id']
if shipment_scan_obj:
shipment_pptl_mapping_obj = ShipmentPPTLMapping.objects.filter(shipment_id__in = shipment_id_list)
if shipment_pptl_mapping_obj:
.....do something......
这是我尝试过的。它会抛出一个错误 Cannot resolve keyword 'shipmentscanmapping' into field.:-
shipment_pptl_mapping_obj = ShipmentPPTLMapping.objects.filter(shipmentscanmapping__barcode = barcode,shipment_id = shipmentscanmapping__shipment_id)
if shipment_pptl_mapping_obj:
......dosomething.......
如何在 Django ORM 中执行连接操作?
【问题讨论】:
-
你能在models.py中显示相关的模型子类吗?至少是相关的字段定义。
-
哦。我会更新它。
-
我刚刚更新了它。请看一看。
标签: mysql django django-models django-orm