0

是否可以创建和使用 DynamicMapAttributes 等动态属性?我想要实现的是,创建和设置/更新/递增/递减动态属性及其值。

例如,

class Student(Model):
  id = NumberAttribute(null=False)
subject_name = "English"
subject_score = 0
std = Student(id = std_id)
std.<subject_name>= subject_score # since subjects and scores are dynamic.

然后在稍后的时间点在交易中,

Student.<subject_name>.add(10)

我可以将 Sub 和 Score 放在 DynamicMapAttribute 中,但在增加/减少它时,DynamoDB 似乎不允许对地图元素这样做。

我尝试创建如下所示的 DynamicMapAttribute 实例,但仍然不知道如何对属性执行递增/递减等操作。

class Student(DynamicMapAttribute):
  id = NumberAttribute(null=False)
subject_name = "ABC"
subject_init_score = 0

std = Student(id = 101)
std.__setattr__(subject_name, subject_reset_score)

但是然后我如何在不检索它的情况下增加/减少值并添加它(这反过来又无法达到ADD的目的)

任何想法?

PS:我不能在这里做这样的事情,哪里a_date_time/a_number是静态的。https://github.com/pynamodb/PynamoDB/blob/58ff97f42f3ed1e546335e6b86f943ca3c23f7f3/pynamodb/attributes.py#L1000

    >>> class MyDynamicMapAttribute(DynamicMapAttribute):
    >>>     a_date_time = UTCDateTimeAttribute()  # raw map attributes cannot serialize/deserialize datetime values
    >>>
    >>> dynamic_map = MyDynamicMapAttribute()
    >>> dynamic_map.a_date_time = datetime.utcnow()
    >>> dynamic_map.a_number = 5
4

0 回答 0