У меня есть три модели:
class Box(models.Model):
name = models.TextField(blank=True, null=True)
class Toy(models.Model):
box = models.ForeignKey(Box, related_name='toys')
class ToyAttributes(models.Model):
toy = models.ForeignKey(Toy)
color = models.ForeignKey(Color, related_name='colors')
И список:
pairs = [[10, 3], [4, 5], [1, 2]]
Где каждое значение представляет собой пару или поле и идентификаторы цвета.
Мне нужно отфильтровать эти данные и вернуть коробки с игрушками нужного цвета.
Теперь я делаю это:
for n in list:
box = Box.objects.filter(id=n[0], toys__colors=n[1])
if box.exist():
...
Но для длинных списков требуется много времени, как я понимаю, из-за множества SQL-запросов. Могу ли я сделать это быстрее? Можно ли получить только нужные ящики за один запрос и как я могу это сделать? Спасибо!