Каковы лучшие практики для msgprop.EnumProperty и messages.Enum с Python 3 и Cloud NDB? - PullRequest
1 голос
/ 19 января 2020

С Python 2 и NDB мы могли бы хранить Enum в свойствах сущностей следующим образом:

from google.appengine.ext import ndb
from google.appengine.ext.ndb import msgprop
from protorpc import messages

class CoreWebhookService(messages.Enum):
    UNKNOWN = 0
    AUTH0 = 1

class CoreWebhook(ndb.model):
    service = msgprop.EnumProperty(CoreWebhookService, required=True)
    url = ndb.StringProperty(required=True)

С Python 3 на основе этого руководства , говорится в нем If you try to create these objects, a NotImplementedError will be raised. для google.appengine.ext.ndb.msgprop.EnumProperty.

Я понимаю,

from google.appengine.ext import ndb

заменяется на

from google.cloud import ndb

, но какова лучшая практика для Enum с тех пор, как он не реализован?

Спасибо

1 Ответ

2 голосов
/ 22 января 2020

Извините, у меня нет тестового проекта, чтобы проверить это, но python 3 имеет перечисления. Вы должны быть в состоянии сделать что-то прямо как:

from enum import IntEnum

class CoreWebhookService(IntEnum):
    UNKNOWN = 0
    AUTH0 = 1

class CoreWebhook(ndb.model):
  service = IntegerProperty(required = true, choices=list(CoreWebhookService))
  url = ndb.StringProperty(required=True)

...