【发布时间】:2019-06-16 09:05:36
【问题描述】:
目前使用 Django 2.1、Python 3.6、PostgreSQL 11,并在 Heroku 上托管数据库。
我想在我设置的设备视图上实现用户搜索。
Current Page Layout 此页面将列出我们数据库中的人员,并提供指向他们详细信息的链接。我希望用户能够搜索特定的人并相应地填充列表。
Django 文档提供了一些步骤来实现这一点,但对行动计划并不完全清楚。
感谢您的帮助!
编辑:作为参考,我们的数据库中有数百人,目前托管在 Heroku 上。
编辑:Models.py
class Topic(models.Model):
top_name = models.CharField(max_length=264,unique=True)
def __str__ (self):
return self.top_name
class WebPage(models.Model):
topic = models.ForeignKey('Topic',on_delete=models.PROTECT)
name = models.CharField(max_length=264,unique=True)
url = models.URLField(unique=True)
def __str__(self):
return self.name
class AccessRecord(models.Model):
name = models.ForeignKey('WebPage',on_delete=models.PROTECT)
date = models.DateField()
def __str__(self):
return str(self.date)
编辑: `# 搜索代码
def search(request):
keywords=''
if request.method=='POST': # form was submitted
keywords = request.POST.get("keywords", "")
all_queries = None
search_fields = ('name__name','date') # change accordingly
for keyword in keywords.split(' '):
keyword_query = None
for field in search_fields:
each_query = Q(**{field + '__icontains': keyword})
if not keyword_query:
keyword_query = each_query
else:
keyword_query = keyword_query | each_query
if not all_queries:
all_queries = keyword_query
else:
all_queries = all_queries & keyword_query
accesses = AccessRecord.objects.filter(all_queries).distinct()
context = {'accesses':accesses}
return render(request, 'proj_app/search.html', context)
else: # no data submitted
context = {}
return render(request, 'proj_app/index.html', context)`
【问题讨论】:
-
您只需要对您的文本输入更改进行 ajax 调用以触发您的服务器并通过他们传递的值查询用户表。然后得到结果并将它们传递回您的视图。您需要通过 JavaScript 将结果绑定到您的 UI。
-
你有什么办法可以指点我这个演练的方向吗?
标签: python django postgresql user-interface heroku