У меня 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. Любая помощь будет по достоинству оценена.