DocType
ORM に基づいて、マッピングを構築し、ドキュメントを保存するためのクラスを生成しています。
def get_doc_type(self):
attributes = {}
...
# Build attributes dictionary here
DT = type('DocType', (DocType,), attributes)
return DT
これは一見問題なく動作し、マッピングに問題はありません。私の問題は、ドキュメントを保存しようとするときです。
これは動作しません
Doc = get_doc_type()
for instance in queryset:
doc = Doc()
for field_name in fields:
attribute = getattr(instance, field_name, None)
setattr(doc, field_name, attribute)
doc.save(index)
これが発生すると、ドキュメントは保存されますが、属性は設定されません。それはただの空の文書です。
field_name
コードをデバッグして、とattribute
に期待する値が含まれていることを確認しました。
これは機能します
Doc = self.get_doc_type()
for instance in queryset:
kwargs = {}
for field_name in fields:
attribute = getattr(instance, field_name, None)
kwargs.update({field_name: attribute})
doc = Doc(**kwargs)
doc.save(index=index)
この戦略を使用すると、ドキュメントは期待どおりに保存され、すべての情報attributes
が myinstance
からdoc
.
質問
何が原因でしょうか? なぜ両方の戦略が有効でないのか、私には理解できません。