2

「欠落」は動的である必要があるため、ビューでスキーマを命令的に定義する必要があります。

    # ...
    now = datetime.datetime.utcnow()
    delta = datetime.timedelta(days=range)

    schema = SchemaNode(Mapping())
    schema.add(SchemaNode(Date(), name='to', missing=now))
    schema.add(SchemaNode(Date(), name='from', missing=now - delta))
    # ...

これは醜いです。カスタムタイプを定義する以外に良い方法はありますか?

4

1 に答える 1

6

スキーマ バインディングを使用します。

@colander.deferred
def deferred_now(node, kw):
    now = kw['now']
    return now

@colander.deferred
def deferred_now_delta(node, kw):
    return kw['now'] - kw['delta']

class MySchema(MappingSchema):
     to = SchemaNode(Date(), missing=deferred_now)
     frm = SchemaNode(Date(), missing=deferred_now_delta)

def aview(request):
    schema = MySchema().bind(now=now(), delta=somedelta)
于 2012-05-13T02:23:16.010 に答える