Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/mercurial/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Django Haystack:如何索引另一个类中的字段_Python_Django_<img Src="//i.stack.imgur.com/RUiNP.png" Height="16" Width="18" Alt="" Class="sponsor Tag Img">elasticsearch_Django Haystack - Fatal编程技术网 elasticsearch,django-haystack,Python,Django,elasticsearch,Django Haystack" /> elasticsearch,django-haystack,Python,Django,elasticsearch,Django Haystack" />

Python Django Haystack:如何索引另一个类中的字段

Python Django Haystack:如何索引另一个类中的字段,python,django,elasticsearch,django-haystack,Python,Django,elasticsearch,Django Haystack,我有一个django模型故事,我能够成功地使用模板对其进行索引。但是,还有另一个模型Reviews,它有一个静态方法,该方法接受Story对象,并将ratings作为整数返回。我如何在评级上为故事编制索引 {{ object.story_name }} {{Reviews.ratings(object)}} 我试图在templatestory\u text.txt中调用此方法,但这导致了一个错误 django.template.exceptions.TemplateSyntaxError: C

我有一个django模型
故事
,我能够成功地使用模板对其进行索引。但是,还有另一个模型
Reviews
,它有一个静态方法,该方法接受
Story
对象,并将
ratings
作为整数返回。我如何在
评级
上为
故事
编制索引

{{ object.story_name }}
{{Reviews.ratings(object)}}
我试图在template
story\u text.txt
中调用此方法,但这导致了一个错误

django.template.exceptions.TemplateSyntaxError: Could not parse the remainder: '(object)'....
编辑: 我试着在模板中使用下面的代码,它在构建索引时没有给出任何错误。但是在使用
SearchQuerySet

Reviews.average_start_rating( {{object}} )

我很困惑。我不认为您可以在Django的模板引擎中使用类似{{Reviews.rating object}}的语法。如果可能的话,这是我不知道的

为什么不首先在上下文中传递要在模板中显示的内容

{{object}}无法呈现,因为它在上下文中有对象。例如,如果您使用UpdateView(基于类的视图),它会自动在上下文中包含对象

class Example(UpdateView):
    model = yourClass
    form_class = yourFormClass
    template_name = yourhtml
    success_url = URL redirect page after success
由于UpdateView,您可以在html.html中使用
{{{object}}
。您在url配置中给出pk号,如
(?P[0-9]+)

您可以在不使用UpdateView的情况下执行此操作

class anotherExample(View):
    def get(self, request, *args, **kwargs):
        render(request, 'yourhtml.html', {"object": Class.objects.get(id=self.kwargs['pk'])})
在表单视图中,可以使用

def get_context_data(self, **kwargs):
    context = super().get_context_data(**kwargs)
    context['object'] = Class.objects.get(id= ... )
    return context

我的想法是将story对象和review对象传递到上下文中,其中包含story对象的FK。

我能够使用haystack advanced data preparation使其工作。

使用一个额外的字段,可以有一个准备方法。但唯一的问题是我可以使用此字段对数据进行排序,但不能使用它进行搜索

class StoryIndex(indexes.SearchIndex, indexes.Indexable):
    text = indexes.CharField(document=True, use_template=True)
    ratings = indexes.FloatField()

    def prepare_ratings(self, obj):
        return Reviews.ratings(obj)

    def get_model(self):
        return Story

尝试
{{Reviews.ratings object}}
args=(object,)
不工作,失败时出现同样的错误,
无法解析剩余部分
您可以显示您的
评级
代码吗?我建议您试用Django上下文处理器。我在haystack模板中使用的模板,我找到了一种添加索引字段的方法。最终将添加答案。做一些研究,我明白了。那么,我完全误解了你的问题。我会检查django haystack和你的答案!