避免Django中的循环导入

时间:2017-12-20 13:05:31

标签: python django python-3.x django-models python-import

我有两个模型公司和行动:

from companies.models import Company

class Action(models.Model):

    company = models.ForeignKey(Company, blank=True, null=True, related_name='activity', on_delete=models.CASCADE)

然后我在utils.py中有一个实用程序

from .models import Action

def create_action(user, verb, target_name=None, target=None):
    action = Action(user=user, verb=verb, target=target)

此实用程序我在def save上调用公司模型,因此在公司模型上我有:

from not.utils import create_action 

所以Action Model导入公司模型为FK,utils导入Action Model和Company Model import utils

现在,由于循环导入,Django会出错:

ImportError: cannot import name 'Company'

我在这里看到一些q / a直接使用导入(没有来)我试过但没有工作

import not.utils as nt
nt.create_action(...)

1 个答案:

答案 0 :(得分:2)

Companyuse a string移除actions/models.py导入:

class Action(models.Model):
    company = models.ForeignKey('companies.Company', blank=True, null=True, related_name='activity', on_delete=models.CASCADE)