我django如何检查数据库中是否存在特定单词。 例如,如果数据库类列包含' hello,welcome,world '。如果我发送请求 的 Q =欢迎 如何检查我的数据库 classs 列中是否存在特定的“欢迎”?
views.py
from django.shortcuts import render
from django.http import HttpResponse
from airapp.models import Travel
from django.db.models import Q
def search_form(request):
return render(request, 'search_form.html')
def search(request):
if 'f' in request.GET and request.GET['f']:
q = request.GET['f']
r = request.GET['t']
s = request.GET['c']
books = Travel.objects.filter(Q(classs__contains=s),
froms__icontains=q,to=r)
return render(request, 'search_results.html',
{'books': books, 'query': q})
else:
return HttpResponse('Please submit a search term.')
models.py
from django.db import models
class Travel(models.Model):
froms = models.CharField(max_length=30)
to = models.CharField(max_length=30)
classs = models.CharField(max_length=20)
details = models.CharField(max_length=3330)
def __unicode__(self):
return self.froms
seach_form.html
<html>
<head>
<title>Search</title>
<script language="JavaScript" type="text/javascript" src="http://code.jquery.com/jquery-1.11.1.min.js"></script>
<script language="JavaScript" type="text/javascript">
$(function() {
$("#search-form").submit(function() {
var from = $("#search-form :input[name='f']").val();
var tos = $("#search-form :input[name='t']").val();
var clas = $("#search-form :input[name='c']").val();
$.get("/search/", { f : from, t:tos, c:clas })
.done(function(data) {
$("#search-result").html(data);
$("#search-result").show();
});
return false;
})});
</script>
</head>
<body>
<form id="search-form">
FROM<input type="text" name="f"><br>
TO<input type="text" name="t"><br>
CLASS<input type="text" name="c"><br>
<input type="submit" value="Search">
</form>
<div id="search-result" style="display:none">
</div>
</body>
</html>
我该如何查看django查询。
答案 0 :(得分:1)
首先,contains
和icontains
之间的区别仅在于icontains
是contains
的不区分大小写的版本。两个查找都匹配部分字符串,例如
Entry.objects.get(headline__contains='Lennon')
对应SQL
SELECT ... WHERE headline LIKE '%Lennon%';
(来自Django文档)
如果您不想匹配子字符串,但要匹配列中的确切字符串,请分别使用exact
或iexact
。
如果你的classs列包含多个以逗号分隔的条目,我想这有点棘手。 您可以确保每个条目以逗号(也是最后一个)结尾,然后查询“欢迎”,例如(尽管有点hacky)。然而,我仍然不确定这是否是您想要解决的问题。