我成功地安装了whoosh并使其与Haystack一起工作。一切都很好,但我面临的一个问题是:在搜索关键字并打印出结果后,当我单击结果(标题)时,它不会将我重定向到我单击的关键字的页面,它只是静态的。我试着添加了一个get_absolute_url方法。但它不起作用。我错过了什么?在
模型
class Meek(models.Model):
user=models.ForeignKey(User)
title=models.CharField(max_length=250, unique=True)
address=models.CharField(max_length=200)
city=models.CharField(max_length=200)
state=models.CharField(max_length=200)
main_view=models.ImageField(upload_to="photos",blank=True, null=True)
side_view=models.ImageField(upload_to="photos",blank=True, null=True)
pub_date=models.DateTimeField()
def __unicode__(self):
return self.title
@models.permalink
def get_absolute_url(self):
return ('findme', (), {
'main_view': self.main_view,
'side_view': self.side_view,
'address': self.address,
'city': self.city,
'state': self.state})
搜索/搜索.html在
^{pr2}$Urlconf公司
#url where the objects are posted.
(r'^find/$', findme),
#haystack url where you can search
(r'^search/', include('haystack.urls')),
观点:
def findme(request):
extra_data_context={}
#if there's nothing in the field do nothing.
if request.method=="POST":
form=MeekForm(request.POST, request.FILES)
if form.is_valid():
data=form.cleaned_data
newmeeks=Meek(
user=request.user,
pub_date=datetime.datetime.now(),
title=data['title'],
main_view=request.FILES['main_view'],
side_view=request.FILES['side_view'],
address=data['address'],
city=data['city'],
state=data['state'])
newmeeks.save()
extra_data_context.update({'MeekForm':form})
else:
form = MeekForm()
extra_data_context.update({'MeekForm':form})
extra_data_context.update({'Meeks':Meek.objects.filter(user=request.user)})
return render_to_response('postme.html',extra_data_context,context_instance=RequestContext(request))
在
get_absolute_url
中,你的URL被称为findme
,你给了它五个参数。在URL配置中,URL在那里,但是:findme
(即,您需要有name="findme"
),并且例如,以下URL同时具有名称和命名参数(有关详细信息,请参见documentation on URLs):
您需要使用参数}创建一个类似的URL,以便Django可以正确地反转URL并为模型提供一个绝对URL。在
main_view
、side_view
、address
、city
和{相关问题 更多 >
编程相关推荐