Django - mongoengine - Круговой импорт в моделях файлов различных приложений - PullRequest
1 голос
/ 15 марта 2019

У меня 2 приложения, пользователь и ящики. Их модели содержат 2 класса каждый, и ни один из классов не имеет циклическую зависимость, но файл модели имеет циклическую зависимость.

Их модели, как показано ниже

#users/models.py

from mongoengine import fields, Document
from boxes.models import *

class Token(Document):
    id = fields.IntField(primary_key=True)
    key = fields.StringField(required=True)
    box = fields.ReferenceField(Box)

class User(Document):
    id = fields.IntField(primary_key=True)
    name = fields.StringField(required=True)


#boxes/models.py

from mongoengine import fields, Document
from users.models import *

class Box(Document):
    id = fields.IntField(primary_key=True)
    name = fields.StringField(required=True)


class Testing(Document):
    id = fields.IntField(primary_key=True)
    field1 = fields.StringField(required=True)
    field_ref = fields.ReferenceField(User)

Я получаю ниже ошибку в классе тестирования при запуске сервера

NameError: name 'User' is not defined

То, что я пробовал:

#Trial 1
from django.apps import apps

field_ref = fields.ReferenceField(apps.get_model('users', 'User'))
#error
django.core.exceptions.AppRegistryNotReady: Models are not loaded yet.


#Trial 2
field_ref = fields.ReferenceField('User')
OR
field_ref = fields.ReferenceField('users.User')
#Error
mongoengine.errors.ValidationError: ValidationError (Box:5b8ddef7a095d8586d2263bb) (A ReferenceField only accepts DBRef or documents: ['user'])

Я пробовал решения, приведенные в других постах, но они не работают.

Я использую Django = 1,9. Любая помощь будет по достоинству оценена.

...