Django ORM联接查询
我有两个模型Django ORM联接查询,django,django-models,django-orm,Django,Django Models,Django Orm,我有两个模型 class ShipmentBagSealMapping(models.Model): bag_seal = models.CharField(max_length = 255) status = models.CharField(max_length = 255, default = 'open') time = models.DateTimeField( auto_now_add = True, db_index = True) shipment
class ShipmentBagSealMapping(models.Model):
bag_seal = models.CharField(max_length = 255)
status = models.CharField(max_length = 255, default = 'open')
time = models.DateTimeField( auto_now_add = True, db_index = True)
shipment_id = models.ForeignKey('Shipment', related_name = 'bags')
class Shipment(models.Model):
job_id = models.CharField(max_length = 255)
time = models.DateTimeField( auto_now_add = True, db_index = True)
我想写一个JOIN查询,告诉我ShipmentBagSealMapping
中status=close
的记录计数,shipping
的时间在[开始时间和结束时间]
范围内
以下是我所尝试的:
total_bags = ShipmentBagSealMapping.objects.filter(shipments__time__range = [start_time,end_time],status='close').values('bag_seal').distinct().count()
但它抛出了一个错误,即:-
Cannot resolve keyword 'shipments' into field. Choices are: bag_seal, id, shipment_id, status, time
我该怎么做?这应该可以做到:
total_bags = ShipmentBagSealMapping.objects.filter(shipment_id__time__range = [start_time,end_time],status='close').values('bag_seal').distinct().count()
请注意,您已将该字段定义为
shipping\u id
而非shippings
Django将自动在您的外键中添加_id,因此进行一些类似的更改可能会有所帮助
class ShipmentBagSealMapping(model.Model):
bag_seal = models.CharField(max_length = 255)
status = models.CharField(max_length = 255 )
time = models.DateTimeField( auto_now_add = True)
shipments = models.ForeignKey('Shipment', related_name = 'bags')
哦,是的……非常感谢。:)请你也看看这个问题好吗。谢谢