【问题标题】:Django model mixin import dependent modelDjango 模型 mixin 导入依赖模型
【发布时间】:2014-07-02 12:32:57
【问题描述】:

在 Django 1.6 项目中,我正在使用具有外键依赖关系的模型结构,如下所示。在我的 ParentModel 方法 mixin 中,我需要添加一个方法来创建新的 ChildModel 实例,其中父外键作为方法上下文中的“self”。

我已经通过从ParentModel 方法中导入ChildModel 成功地实现了这一点,但我想知道是否有更简洁的方法来实现这一点。当我尝试在 mixins.py 的顶层直接导入 Child 模型时,我收到一个导入错误,这是由于我想的交叉导入。

这里有没有办法避免 ParentModel 方法中的导入表单?

如果不是,出于好奇,从方法中动态调用 ChildImport 的开销是多少? 还是python每次都导入该方法,还是该代码以某种方式缓存?

models.py

from .mixins import ParentMixins

class ParentModel(models.Model, ParentMixins):
    name = models.TextField()

class ChildModel(models.Model):
    parent = models.ForeignKey(ParentModel)

mixins.py

class ParentMixins(object):
     def create_child(self):
         from .models import ChildModel
         ChildModel.create(parent=self)

【问题讨论】:

    标签: python django methods import dependencies


    【解决方案1】:

    假设您可以保证任何类都没有为父字段定义相关名称,您可以在您的 create_child 方法中执行此操作:

    self.childmodel_set.create()
    

    那么根本不需要导入。

    (尽管我必须承认,我对让 mixin 依赖于具体模型中的字段而实际上并没有自己提供的想法有点困惑。)

    【讨论】:

      猜你喜欢
      • 2012-03-23
      • 2018-01-31
      • 1970-01-01
      • 1970-01-01
      • 2018-02-23
      • 2016-03-10
      • 1970-01-01
      • 2023-04-04
      • 2018-01-16
      相关资源
      最近更新 更多