Pynamodb - динамическая JSON-сериализация - PullRequest
0 голосов
/ 31 мая 2018

У меня есть составная модель, которая выглядит следующим образом: -

class Parser(MapAttribute):
    ParserType = UnicodeAttribute()
    MailBody = UnicodeAttribute()
    BestTemplate = UnicodeAttribute(null=True)
    ParseStatus = ParseStatus()
    ParsedOutput = JSONAttribute()


class OMPStatusModel(Model):
    """
    PynamoDB Model handling table OMPStatus
    """


    class Meta:
        table_name = 'OMPStatus'
        region = 'us-east-1'
    SNSMessageID = UnicodeAttribute(hash_key=True)
    CreatedDateTime = UTCDateTimeAttribute()
    UpdatedDateTime = UTCDateTimeAttribute(null=True)
    CompletedDateTime = UTCDateTimeAttribute(null=True)
    ProcessStatus = UnicodeAttribute()
    ErrorDetail = UnicodeAttribute(default="Not set")
    SES = SES(null=True)
    SNS = SNS(null=True)
    Parser = Parser(null=True)

Это хорошо работает, за исключением того, что ParsedOutput сохраняется как список пар ключ-значение в DynamoDB.Я хочу облегчить чтение для группы поддержки и хочу разбить его на собственный список атрибутов - предположим, что все они могут быть UnicodeAttribute () ради обсуждения.

Я думал, что долженбыть в состоянии сделать что-то вроде: -

class MyMapAttribute(MapAttribute):
    my_internal_map = MapAttribute()


class Parser(MapAttribute):
    ParserType = UnicodeAttribute()
    MailBody = UnicodeAttribute()
    BestTemplate = UnicodeAttribute(null=True)
    ParseStatus = ParseStatus()
    ParsedOutput = MyMapAttribute(default = {})

Затем сделайте что-то вроде: -

OMPStatusModel.update(actions=[OMPStatusModel.SES.set(kwargs[key]),
                          OMPStatusModel.UpdatedDateTime.set(datetime.now())])

Не совсем понимаю, так как это не совсем работает.Есть указатели?

1 Ответ

0 голосов
/ 14 июня 2018

В конечном счете, я не смог передать нужный объект на Карту.Как только я это сделал, все заработало.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...