在弹性搜索(Django项目)中,如何避免为索引而重复代码
我的理解是,在弹性搜索中不能返回对象,但很多时候我发现自己使用同一相关对象的不同变量
例如,如果我有一个Student
的索引,并且需要关于他们正在获取的Subject
的信息。如果我想要学生注册的第一个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
有没有一种方法可以调用index函数prepare\u first\u subject\u registered\u id来避免重复和不必要地索引类似的代码
尝试使用getattr()函数。见Python string to attribute。您可以动态地将想要的属性传递给同一个函数。我还没有测试下面的代码,但我相信它会把你放在正确的轨道上
相关问题 更多 >
编程相关推荐