0
accepted_bids = Bid.objects.filter(shipment__user=u, status='acc').select_related('shipment')
completed_shipments = []
for b in accepted_bids:
completed_shipments.append(b.shipment)
vehicles_shipped = []
for s in completed_shipments:
vehicles_shipped.extend(s.items.all())
最后,我想要一份运输车辆清单。如果车辆是已完成的货件的一部分,则该车辆将被运送。如果出货已接受,则装运完成。有没有简化这个Django查询的方法?
我不希望迭代查询集,从而在必要之前强制命中数据库......例如,是否有办法从出价列表中获取所有相关货件?
这里是我的模型的下调版本:
class Shipment(Model):
user = ForeignKey(User, related_name='shipments')
class ShipmentItem(models.Model):
shipment = ForeignKey(Shipment, related_name='items')
class Meta:
abstract = True
class VehicleItem(ShipmentItem):
pass
class Bid(Model):
user = ForeignKey(User, related_name='bids')
shipment = ForeignKey(Shipment, related_name='bids')
对不起,以为你有足够的信息。您所建议的问题是,“出价”是复数(出货可能有很多出价),所以我认为您不能像这样过滤它? – mpen 2010-05-21 06:37:37
所以你说的是*所有的*出货都需要被接受? – 2010-05-21 07:09:16
不......一点也不。只能接受一个出价。但'shipment__bid__status'不是一回事。这将是'shipment__bids__status' ...这将如何工作?你需要找到属于装运的车辆并接受投标...“许多投标”(但只有一个被接受)的事情使这变得复杂。 – mpen 2010-05-21 18:31:51