Python 在django中发出搜索请求
我正试图为我的django项目创建一个搜索栏,但无论何时搜索某个项目,它都会返回默认情况下存在的所有内容 以下是inside views.py中的代码:Python 在django中发出搜索请求,python,Python,我正试图为我的django项目创建一个搜索栏,但无论何时搜索某个项目,它都会返回默认情况下存在的所有内容 以下是inside views.py中的代码: def index(request): if not request.user.is_authenticated(): return render(request, 'Lfm/login.html') else: lfm = Lfm.objects.filt
def index(request):
if not request.user.is_authenticated():
return render(request, 'Lfm/login.html')
else:
lfm = Lfm.objects.filter(user=request.user)
query = request.GET.get('q')
if query:
Lfm = lfm.filter(
Q(name__icontains=query) |
Q(region__icontains=query) |
Q(rank__icontains=query)
).distinct()
return render(request, 'Lfm/index.html', {'lfm': Lfm,})
else:
return render(request, 'Lfm/index.html', {'Lfm': lfm })
models.py文件:
class Lfm(models.Model):
name = models.CharField(max_length=20)
rank = models.CharField(max_length=20, choices=RANKS)
rank_sr = models.IntegerField()
region = models.CharField(max_length=20, choices=REGIONS)
roles = models.CharField(max_length=30, choices=ROLES)
btag = models.CharField(max_length=30)
time = models.CharField(max_length=14, choices=TIMES)
logo = models.FileField()
contact_email = models.EmailField()
和base.html
<form class="navbar-form navbar-left" role="search" method="get" action="{% url 'Lfm:index' %}">
<div class="form-group">
<input type="text" class="form-control" name="q" value="{{ request.GET.q }}">
</div>
<button type="submit" class="btn btn-default">Search</button>
</form>
搜寻
您需要在初始查询中运行筛选器
def index(request):
if not request.user.is_authenticated():
return render(request, 'Lfm/login.html')
else:
lfm = Lfm.objects.filter(Q(user=request.user, Q(
Q(name__icontains=query) |
Q(region__icontains=query) |
Q(rank__icontains=query))
).distinct()
您有一个简单的命名错误! 您的模型类称为
Lfm
。您可以命名结果Lfm
。那不行
重命名您的结果(例如,query\u result=lfm.filter(…
),一切都会解决
顺便说一句:你似乎使用了很多相似的、突兀的名称。这会产生难以阅读的代码。试着使用更多的解释性名称,这样的错误应该不会经常发生