Я создаю класс 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
передаются из моего instance
в doc
.
ВОПРОС
Что может быть причиной этого? Мне непонятно, почему обе стратегии недействительны.