我正在使用带有django-taggit的Django 1.6.1.
我正在尝试扩展我的搜索引擎,以便在标记字段之外的其他字段中搜索关键字.麻烦的是,当我在模型的名称中迭代标签进行icontains搜索时,查询集似乎不再是一个查询集,丢失了count方法,并且distinct方法不起作用.
views.py:
def index(request):
numresources = Resource.objects.count()
if request.method == 'POST':
form = SearchForm(request.POST)
if form.is_valid():
query = form.cleaned_data['query']
tags = parse_tags(query.lower())
# resourcelist = []
# for tag in tags:
# resourcelist.extend(Resource.objects.filter(name__icontains=tag).filter(isActive=True).order_by('-score').distinct())
# resourcelist.extend(Resource.objects.filter(tags__name__in=tags).filter(isActive=True).order_by('-score').distinct())
# numresults = len(resourcelist)
resourcelist = Resource.objects.filter(tags__name__in=tags).filter(isActive=True).order_by('-score').distinct()
querymade = True
numresults = resourcelist.count()
else:
resourcelist = Resource.objects.filter(isActive=True).order_by('-created')[:100]
else:
resourcelist = Resource.objects.filter(isActive=True).order_by('-created')[:100]
form = SearchForm()
return render(request, 'index.html', locals())
Run Code Online (Sandbox Code Playgroud)
将'django'关键字添加到标题或网址中包含'django'的记录中似乎很笨拙.我希望不仅有标签与用户输入的关键字匹配的结果,而且我想在其他字段中搜索输入的关键字,组合这些查询集,并保留两次或更多次添加的结果.
那么在这个过程中如何以及何时按分数排序然后删除重复项?
我是一个完全失去新手试图找出如何使我的硬编码的动态生成的,不仅是作为一个小白锻炼学习Django的,而且这样的数据可以通过管理员进行编辑链接列表. 重要的是它在通过db生成时看起来完全相同,就像它现在处于硬编码状态一样.
这里的主要内容需要用模型表示:
http://www.drugpolicyreformmovement.com/directory
我认为我首先会创建一个类别标题的"类别"表,然后将具有ForeignKey关系的链接"链接"表格重新分类.我认为在模板中我会使用'ifchanged'模板标签与(嵌套?)for循环一起依次遍历每个标题,显示每个标题的子记录.
如果这种情况变得复杂,则在"研究与教育"标题下,儿童记录中有自己的子记录.可能,特别是 当我将此代码重用于其他项目时,我需要容纳任意数量的子级别.
我花了两天时间查看文档和答案,但我仍然没有清楚地了解模型,视图或模板中的内容.
例如,如何遍历模板中的子级别以查看元素是否包含子级?你如何做到这一切,而不是每次观看数千次点击数据?
我能够使用通用视图在我网站的索引页面上预览我的新闻剪辑数据库中的100个最新项目:
现在我需要在我的网站的单独逻辑部分中对我的数据库进行分页.我需要按年分页.我不关心每年有多少条目,我只想从URL获取年份,从该年份获取数据库项目(即/ newsitems/validyearhere),并通过导航方式将其呈现给用户多年.在Rails中有一种方法可以做到这一点,但我无法在Django中找到方法.
我能使用当前部署的模型吗?
from django.db import models
class Article(models.Model):
headline = models.CharField(max_length=100)
subhead = models.CharField(max_length=50)
publication = models.CharField(max_length=30)
author = models.CharField(max_length=50)
date = models.DateField()
website = models.URLField()
def __unicode__(self):
return self.headline
Run Code Online (Sandbox Code Playgroud)
除了当前日期字段之外,我还必须添加冗余的Year数据库字段吗?架构是否需要以任何方式发展才能适应这种情况?
如果用户输入没有条目或不是一年的数据的年份,我还需要它优雅地失败.
请尽可能简单地解释一下,因为我对Django很新,并且发现学习曲线很陡峭.