Django:摆脱循环依赖

use*_*706 2 django django-models

我有两个应用程序,commonappapp1.

这是commonapp/models.py:

from django.db import models
#from app1.models import SpecificFields

# Create your models here.
class CommonFields(models.Model):
    a = models.IntegerField(default = 0)

    class Meta:
        abstract = True

class SomeFields(models.Model):
#    a = models.ForeignKey(SpecificFields)
    a = models.ForeignKey('app1.models.SpecificFields')
Run Code Online (Sandbox Code Playgroud)

而这里是app1/models.py:

from django.db import models
from commonapp.models import CommonFields

# Create your models here.
class SpecificFields(CommonFields):
    a2 = models.IntegerField(default=0)
Run Code Online (Sandbox Code Playgroud)

当我尝试从任一app1或运行SQL时commonapp,我收到以下错误:

$ python manage.py sql commonapp
CommandError: One or more models did not validate:
commonapp.somefields: 'a' has a relation with model app1.models.SpecificFields,
which has either not been installed or is abstract.
Run Code Online (Sandbox Code Playgroud)

我意识到这是一个循环依赖的问题.其他人建议将类的路径指定为字符串而不是实际的类,但这不起作用.我也不能在派生类中指定字符串作为基类名.

如果没有重构我的模型,这样的循环依赖是否可能?

Ign*_*ams 6

app1.modelsCommonFields和之间导入SomeFields.