Как запрашивать обратный внешний ключ несколько раз в Django ORM
Предполагаются следующие модели:
class Store(models.Model):
name = models.CharField(max_length=255)
class Stock(models.Model):
name = models.CharField(max_length=255)
store = models.ForeignKey(Store, on_delete=models.PROTECT)
class Consignment(models.Model):
cost = models.FloatField()
class Order(models.Model):
quantity = models.IntegerField()
stock = models.ForeignKey(Stock, on_delete=models.PROTECT)
consignment = models.ForeignKey(Consignment, on_delete=models.PROTECT)
Как создать кверисет всех «отправлений» всех экземпляров определенного кверисета «магазинов» следующим образом:
target_stores = Store.objects.filter(name__startswith="One")
consignments = target_stores.consignments.all()
Вы делаете запрос в обратном порядке, охватывая несколько отношений с помощью разделителя __
:
Consignment.objects.filter(order__stock__store__name__startswith='One')