0
があることを考えると?変換オブジェクトが
フィールドcomm_value
は、たとえば1234:5678
の文字列で、1234_5678
に変換したいと考えています。
これを達成する方法についてアドバイスをいただけますか?
PS。 pre_dump
はそれを行うための正しい方法を探しますが、それはあなたがやりたいことができmarshmallow
があることを考えると?変換オブジェクトが
フィールドcomm_value
は、たとえば1234:5678
の文字列で、1234_5678
に変換したいと考えています。
これを達成する方法についてアドバイスをいただけますか?
PS。 pre_dump
はそれを行うための正しい方法を探しますが、それはあなたがやりたいことができmarshmallow
pre_dumpを使用して私の最初の日ですので、私はわからないが、私は代わりにクラスメソッドを使用します。
class BGPcommunitiesElasticSchema(marshmallow.Schema):
comm_name = marshmallow.fields.Str(required=True)
comm_value = marshmallow.fields.Method("comm_value_normalizer", required=True)
dev_name = marshmallow.fields.Str(required=True)
time_stamp = marshmallow.fields.Integer(missing=time.time())
@marshmallow.validates('comm_value')
def check_comm_value(self, value):
if value.count(":") < 1:
raise marshmallow.ValidationError("a BGP community value should contain at least once the colon char")
if value.count(":") > 2:
raise marshmallow.ValidationError("a BGP community value should contain no more than two colon chars")
@classmethod
def comm_value_normalizer(cls, obj):
return obj.comm_value.replace(":", "_")
ますもともとの "comm_value"を元のままにしたい場合は、独自のcomm_value_normalized
属性を作成することもできます。
もしあなたが時間があれば、https://stackoverflow.com/questions/44166325/marshmallow-convert-dict-to-tupleでも助言してください。それが可能かどうか疑問に思っています:) – iamsterdam