是否可以创建和使用 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