- 2
✩
0
Django Many-to-Many сложный запрос
Есть модели:
class Owner(Model):
pass
class Item(Model):
owner = ForeignKey(Owner)
tags = ManyToManyField('Tag', through='ItemTag')
class Tag(Model):
name = CharField(max_length=255)
class = ItemTag(Model):
item = ForeignKey(Item)
tag = ForeignKey(Tag)
Требуется найти все Tag, связанные с Item'ами, принадлежащими некоторому Owner? На raw SQL это бы выглядело так:
SELECT t.id, t.name FROM tag t
JOIN itemtag it ON t.id = it.tag_id
JOIN item i ON i.id = it.item_id
JOIN owner o ON o.id = it.owner_id
WHERE o.id = <известный owner_id>
Как это сделать в рамках ORM?
300
1 ответ:
-
- 2
После продолжительного общения я django понял, что не нужно заморачиваться на её ОРМ. Пока ОРМ предназначена для простых запросов, а сложные получаются слишком тормозными и не оптимизированными. Я к тому, что иногда лучше сделать raw запрос чем выдумывать ORM реализацию. Не уверен, но возможно
tags = Tag.objects.filter(itemtag__item__owner=user)прокатит.
Чтобы написать ответ, вы должны авторизироваться.