Pymodm: ImportError (две модели, ссылающиеся друг на друга) - PullRequest
0 голосов
/ 27 февраля 2019

Я пишу приложение todo, используя флешку, mongoDB и Pymodm в качестве ODM.У меня есть две модели под названием User и UserGroups.эти два ссылаются друг на друга так:

user.py

from api.models.userGroup import group
class User(MongoModel):
   _id    = fields.IntegerField(primary_key=True)
   email  = fields.CharField()
   password  = fields.CharField()
   createdAt = fields.DateTimeField(default=datetime.datetime.now())
   groups = [fields.ReferenceField('group')]
   personalTodoLists = fields.EmbeddedDocumentListField('list')

userGroup.py

from api.models.user import user
class UserGroup(MongoModel, EmbeddedMongoModel):
   _id    = fields.IntegerField(primary_key=True)
   name  = fields.CharField()
   createdAt = fields.DateTimeField(default=datetime.datetime.now())
   ownerId = fields.ReferenceField('user')
   contributors = [fields.ReferenceField('user')]
   todoLits = fields.EmbeddedDocumentListField('list')

Я получаю сообщение об ошибке: «ImportError: невозможно импортировать имя« пользователь »»

Как правильно сделать ссылки в этом случае?

1 Ответ

0 голосов
/ 27 февраля 2019

Циркулярная ссылка - распространенная проблема отношений «многие ко многим».Обычное решение, реализуемое пакетами, состоит в том, чтобы предоставить вам способ ссылаться (пока не определено) на другую модель, используя строку с ее именем вместо самого объекта.

Я вижу, что это то, что вына самом деле.Например:

    groups = [fields.ReferenceField('group')]

Вам не нужно на самом деле импортировать этих моделей.Просто закомментируйте / удалите ошибочные строки импорта, и это должно работать.

...