在 MongoEngine 中存储枚举列表时,从数据库读取时不会返回枚举

dap*_*hez 5 python mongoengine

当使用 EnumField 的 ListField 时,从 MongoEngne 返回的对象中的数据不会转换回 Enum。例如:

class DaysOfTheWeek(Enum):
   Mon = 1
   Tue = 2
   # etc ... 

class C(db.Document):
    days = db.ListField(db.EnumField(DaysOfTheWeek))

c1 = C(days=[DaysOfTheWeek.Mon])
assert c1.days ==  [DaysOfTheWeek.Mon]   # OK 
c1.save()
c2 = C.objects.first()
assert c2.days == [1]                    # OK 
assert c2.days == [DaysOfTheWeek.Mon]    # Fails
Run Code Online (Sandbox Code Playgroud)

这是预期的行为吗?我是否错误地使用了 MongoEngine?

我正在使用 MongoEngine 0.22.1。

小智 0

只需更换

assert c2.days == [DaysOfTheWeek.Mon] 
Run Code Online (Sandbox Code Playgroud)

和:

assert c2.days == [DaysOfTheWeek.Mon.value]
Run Code Online (Sandbox Code Playgroud)