簡體   English   中英

Django模型mixin導入依賴模型

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM