【发布时间】:2019-03-15 03:37:11
【问题描述】:
我有 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。任何帮助将不胜感激。
【问题讨论】:
-
在用户/模型中从 box.models import * 更改为 from boxes.models import Box
-
@Trent,我试过了,同样的错误
标签: django django-models mongoengine circular-dependency