7

私はのフィールドstudent_idとして設定しようとするクラスを持っています。私はelasticsearch-dsl docsから永続的な例を参照しています。_id

from elasticsearch_dsl import DocType, String

ELASTICSEARCH_INDEX = 'student_index'

class StudentDoc(DocType):
    '''
    Define mapping for Student type
    '''

    student_id = String(required=True)
    name = String(null_value='')

    class Meta:
        # id = student_id
        index = ELASTICSEARCH_INDEX

idセットインで結んだのですMetaが、うまくいきません。

オーバーライドsaveメソッドとして解決策を取得し、これを達成します

def save(self, **kwargs):
    '''
    Override to set metadata id
    '''
    self.meta.id = self.student_id
    return super(StudentDoc, self).save(**kwargs)

このオブジェクトを次のように作成しています

>>> a = StudentDoc(student_id=1, tags=['test'])
>>> a.save()

Metaオーバーライドメソッドなしで設定する直接的な方法はありますsaveか?

4

1 に答える 1