如何将对象导入到自己的管理器中?

时间:2017-06-30 16:15:56

标签: python django

我意识到我的逻辑存在缺陷,导致循环导入。

这是我想要完成的事情:

managers.py (与models.py分开)

class TicketManager(models.Manager):
    def create_in_atom(self, ticket):
        if type(ticket) is not Ticket:
            raise Exception('Not a Ticket object.')

这会产生此错误:

  

NameError:全局名称'Ticket'未定义

然后我尝试导入它:

from models import Ticket

产生:

  

ImportError:无法导入名称Ticket

如何检查传递给TicketManager函数的参数是否为“Ticket”类型,TickerManager属于该类型?

2 个答案:

答案 0 :(得分:1)

您可以动态获取模型,而不是导入:

from django.apps import AppConfig

class TicketManager(models.Manager):
    def create_in_atom(self, ticket):
        if type(ticket) is not AppConfig.get_model('Ticket'):
            raise Exception('Not a Ticket object.')

答案 1 :(得分:0)

{{1}}

答案是" self.model"。

因为您要将managers.py导入models.py,所以您已经可以访问该模型。

Read more here.