我是Django的新手。我正在建立一个项目,该项目可以显示基于特定作者或作者的引用。我在创建搜索功能以显示基于作者姓名的报价时遇到麻烦。如何创建搜索视图功能并将其显示在模板上。
例如,用户从Author类中的author_name中搜索作者名称,然后显示作者的引文列表
下面是我的models.py文件的示例
类作者(models.Model):
author_name = models.CharField(max_length=50)
id = models.AutoField(primary_key=True)
description = models.TextField(max_length=500)
portrait = models.ImageField()
def __str__(self):
return self.author_name
类Quote(models.Model):
author = models.ForeignKey(Author, on_delete=models.CASCADE)
quote = models.TextField(max_length=500)
def __str__(self):
return self.quote
答案 0 :(得分:0)
对于给定的 author_name
,您可以使用以下命令查找该作者的Quote
:
Quote.objects.filter(author__author_name=author_name)
您可能要使用__icontains
lookup [Django-doc],因为如果您搜索Alexander Pope
或pope
,则它将与alex
匹配:
Quote.objects.filter(author__author_name__icontains=author_name)
答案 1 :(得分:0)
为此,您可以尝试如下操作: 在视图中创建搜索功能。py
def search(request):
q = request.GET.get('q')
if q:
search_results = Quote.objects.filter(author__author_name__icontains=q)
return render(request, 'template',{'search_results':search_results})
else:
messages.info(request,'no results found for {}',format(q))
将此视图映射到某些网址:
path('search/',views.search,name='search')
在模板中这样做:
<form action="{% url 'search' %}">
<input type="text" name="q">
<input type='submit' value='Search'>
</form>