[英]Django model mixin import dependent model
在Django 1.6項目中,我正在使用具有外鍵依賴關系的模型結構,如下所示。 在我的ParentModel方法mixin中,我需要添加一個方法,該方法使用方法上下文中的父外鍵作為“自身”來創建新的ChildModel
實例。
我已經通過從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)
假設您可以確保任何類都沒有為父字段定義related_name,則可以在create_child
方法中執行以下操作:
self.childmodel_set.create()
這樣就完全不需要導入了。
(盡管我必須承認,我對讓mixin依賴於具體模型中的字段(實際上並沒有提供自己)的想法有些困惑。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.