我想從模型的save方法中觸發一個視圖函數,以寫入或更新與該實例關聯的xml文件。將視圖函數導入到models.py - 通過覆蓋保存方法觸發
#models.py
from myapp.views import updateXML, createXML
class myModel(models.Model):
def save(self, *args, **kwargs):
if self.pk is not None:
updateXML(self)
else:
createXML(self)
super(FatherAgendaTemplate, self).save(*args, **kwargs)
#views.py
from myapp.models import otherModel
def createXML(instance):
print "create XML"
print instance
def updateXML(instance):
print "update XML"
print instance
的問題是,我需要導入otherModel成有一個外鍵基於myModel的views.py,這會導致某種形式的衝突,我得到的錯誤:
ImportError: cannot import name createXML
我想我會以這種錯誤的方式去做,在模型和視圖之間導入,因爲它會引發導入錯誤。什麼是正確的方法來做到這一點?當然,我可以在models.py中完成所有的xml編寫函數,並避免導入衝突,但這似乎是一個混亂的方法。
啊OK,第一個解決辦法是什麼我失蹤,使用自結合具體型號功能集成到模型DEFS。函數(),缺少這個概念。雖然我認爲最簡潔的解決方案是第二種,如果函數是以一種通用的方式在不同模型中使用,那我也會嘗試。謝謝! – HdN8 2011-03-25 10:06:59