【发布时间】:2017-01-18 02:14:14
【问题描述】:
如何避免代码重复以在 Elastic Search(Django 项目)中建立索引?
据我了解,您无法在弹性搜索中返回对象,但很多时候我发现自己使用来自同一个相关对象的不同变量。
例如,如果我有一个Student 的索引并且需要有关他们正在使用的Subjects 的信息。如果我想要学生注册的第一个Subject,我会在弹性搜索中做这样的事情:
...
first_subject_enrolled_id = indexes.IntegerField(model_attr='service__id')
def prepare_first_subject_enrolled_id(self, obj):
first_subject_enrolled = Subject.objects.filter(student=obj).order_by('id')
return first_subject_enrolled.id
但是假设我还想要注册的第一个班级的Subject 名称。我将不得不重复很多代码。例如:
def prepare_first_subject_name(self, obj):
first_subject_enrolled = Subject.objects.filter(student=obj).order_by('id')
return first_subject_enrolled.name
有没有一种方法可以调用索引函数 prepare_first_subject_enrolled_id 来避免重复和对类似代码进行不必要的索引?
【问题讨论】:
标签: python django elasticsearch