У меня есть базовый класс документов Feed
, от которого наследуются RSS
и Channels
. Вот определение:
class Feed(Document):
meta_info = EmbeddedDocument(MetaInfo, default=MetaInfo, required=True)
name = StringField()
link = StringField()
meta = {'allow_inheritance': True}
Я хочу, чтобы два моих других класса, RSS
и Channels
, могли наследовать документ Feed
со встроенным документом MetaInfo
. Однако при запуске всего файла вместе со следующим кодом:
class Channel(Feed):
channel_id = IntField(primary_key=True, unique=True, required=True)
update_interval = IntField(default=300, required=True)
# similar class for RSS but with different fields
я получаю следующую ошибку:
File "/Users/komron/dev/github/courant/src/models/channels.py", line 9, in <module>
class Channel(Feed):
File "/Users/komron/.local/share/virtualenvs/courant-Dv7-v42z/lib/python3.7/sitepackages/mongoengine/base/metaclasses.py", line 407, in __new__
raise ValueError("Cannot override primary key field")
ValueError: Cannot override primary key field
Что я делаю не так? Есть ли какие-либо ограничения на наследование с MongoEngine, о которых я должен знать? Спасибо.