【发布时间】:2019-02-26 19:33:32
【问题描述】:
我真的不知道如何在标题中正确陈述这个问题。
假设我有一张表Word,如下所示:
| id | text |
| --- | --- |
| 0 | Hello |
| 1 | Adam |
| 2 | Hello |
| 3 | Max |
| 4 | foo |
| 5 | bar |
是否可以根据text查询这张表,并接收到主键(id)正好为1的对象?
如果我这样做了
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 方法可以在一次调用中执行此操作?最好直接使用Django的QuerySets?
编辑: 这个想法实际上是我想过滤第二个查询集中的那些词。比如:
Word.objects.filter(text__of__previous__word='Hello', text='Max')
【问题讨论】:
标签: python sql django postgresql django-models