1
私はオブジェクトウィジェットを使ってオブジェクトの属性を表示しています。例えばJinja2のテンプレートの中にオブジェのプロパティを表示するには、「created_atと」をしようとするとPythonオブジェクトを文字列参照から取り出す方法
serialization cstruct: [<abc.modules.core.models.Assessment object at 0x105583320>]
は、結果は次のとおりです:
jinja2.exceptions.UndefinedError: 'str object' has no attribute 'created_at'
何ができる私のウィジェットのシリアル化法では、私は私のcstructはが正確であることがわかります私はAssessmentオブジェクトをJinja2内の文字列ではなくオブジェクトとして考えるようにしますか?私はそれが非常にシンプルだと信じていますが、私はまだ間違っているものを見つけることができません。助けてください。
もう少しコード: スキーマノード:
class SubcontractorAssessmentSchema(MappingSchema):
""" **Schema definition for ``Subcontractor Assessment`` part.** """
readonly = True
assessments = SchemaNode(String(), widget=LastResultsWidget2(),
title='Assessment:', missing='')
[...]
ウィジェット:
class LastResultsWidget2(SelectWidget):
""" **Widget for Last Results.** """
template = 'last_results'
readonly_template = 'last_results'
strip = True
def serialize(self, field, cstruct, **kw):
"""
Overwritten default serialize of SelectWidget.
:param field: Field
:param cstruct: Value of Widget
:param kw: Additional arguments.
:return: rendered field.
"""
if cstruct in (colander.null, None):
cstruct = self.null_value
# print ('serialization cstruct: ' +str(cstruct))
return field.renderer(self.template, field=field, cstruct=cstruct)
ドント 'シリアル化 - オブジェクトを送信します。コードを表示します。 – furas
私が知っている限り、これはDeformウィジェットで動作する方法です。ウィジェットを使ってシリアライズを避けることはできません。 – Piotr
これは0.9の変形ですか?完全なトレースバックとJinja 2テンプレートのエラーを明確にすることはできますか? –