[英]Using Right Join and WHERE IN Clause
考慮這些模型
class SearchableText(models.Model):
searchable_text = models.TextField()
class SearchTerm(models.Model):
searchabletext = models.ForeignKey(SearchableText, on_delete=models.CASCADE)
term = models.CharField(max_length=100)
我想使用django orm編寫等效於此sql語句
Select SearchableText.* right join SearchTerm on SearchTerm.searchabletext=SearchableText.id where SearchTerm.term in ("term 1","term 2","term 3")
我也想根據匹配項的數量對結果進行排序,但是我想它可能會引起另一個問題。
您可以使用Q
功能。 我認為這可能是您要查詢的查詢:
from django.db.models import Q, F
SearchableText.objects.filter(Q(id=F('searchterm__searchabletext')), searchterm__term__in=['term1', 'term2', 'term3'])
生成的SQL查詢是這樣的:
SELECT app_searchabletext.* FROM app_searchabletext INNER JOIN app_searchterm ON (app_searchabletext.id = app_searchterm.searchabletext_id) WHERE (app_searchabletext.id = (app_searchterm.searchabletext_id) AND app_searchterm.term IN (term1, term2, term3))
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.