Я не знаю, как правильно сформулировать этот вопрос в заголовке.
Предположим, у меня есть таблица Word
, подобная следующей:
| id | text |
| --- | --- |
| 0 | Hello |
| 1 | Adam |
| 2 | Hello |
| 3 | Max |
| 4 | foo |
| 5 | bar |
Возможно лизапросить эту таблицу на основе text
и получить объекты, чей первичный ключ (id) равен единице?
Итак, если я сделаю
Word.objects.filter(text='Hello')
, я получу QuerySet
, содержащийстроки
| id | text |
| --- | --- |
| 0 | Hello |
| 2 | Hello |
но я хочу строки
| id | text |
| --- | --- |
| 1 | Adam |
| 3 | Max |
Я думаю, я мог бы сделать
word_ids = Word.objects.filter(text='Hello').values_list('id', flat=True)
word_ids = [w_id + 1 for w_id in word_ids] # or use a numpy array for this
Word.objects.filter(id__in=word_ids)
, но это не кажется слишком эффективным.Есть ли прямой способ SQL сделать это за один вызов?Желательно напрямую использовать QuerySets Django?
EDIT: Идея состоит в том, что на самом деле я хочу отфильтровать те слова, которые есть во втором QuerySet.Что-то вроде:
Word.objects.filter(text__of__previous__word='Hello', text='Max')